【发布时间】:2020-06-29 06:55:29
【问题描述】:
我从 API 获取数据,每个帖子的文本长度都不同,所以我想制作一个负责任的 Text 小部件,它希望表现得像这张图片
我尝试了这个解决方案,但是如果我点击 show more text 每个 Text 小部件的大小都会增加(请参阅这个 ),因为我将 descTextShowFlag 这个 bool 变量声明为全局变量,并且有任何动态增加文本小部件高度的方法,因为这里我想给maxline属性作为默认值,这个maxline属性也想动态增加,如果有什么好的方法请告诉我
import 'package:auto_size_text/auto_size_text.dart';
import 'package:exa/Model/ModelNewsFeed.dart';
import 'package:flutter/material.dart';
class Examplewidget extends StatefulWidget {
NewsFeeds newsFeeds;
Examplewidget(this.newsFeeds);
@override
_ExamplewidgetState createState() => _ExamplewidgetState();
}
class _ExamplewidgetState extends State<Examplewidget> {
String data = "We’ll see how image picker works in flutter for android and iOS. Ans: Image picker is a plugin which is used to get images from gallery or camera in the app. ... This is called Privacy - Photo Library Usage Description in the visual editor(Xcode or Android Studio).";
bool descTextShowFlag = false;
@override
Widget build(BuildContext context) {
int listsize = widget.newsFeeds.data.data.length;
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(14.0),
child: ListView.builder(
itemCount: listsize,
itemBuilder: (context, index) {
String textStatus =
"${widget.newsFeeds.data.data[index].postContent}";
return new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text( "$textStatus",
style: TextStyle(fontSize: 16.0),
maxLines: descTextShowFlag ? 8 : 2,
textAlign: TextAlign.start),
InkWell(
onTap: () {
setState(() {
descTextShowFlag = !descTextShowFlag;
});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
descTextShowFlag
? Text(
"Show Less",
style: TextStyle(
fontSize: 16.0,
color: Colors.blue),
)
: Text("Show More",
style: TextStyle(color: Colors.blue))
],
),
),
],
);
}),
),
);
}
}
【问题讨论】: