我有一个名为HorizontalList的自定义小部件,该小部件接收列表并水平显示。
我已经创建了一个垂直列表,其行由这些水平列表组成。
我的问题是,即使传递到每个水平列表的列表与其他列表不同,呈现的所有行也与使用相同列表构建窗口小部件的情况相同。
我签入了小部件本身的构造函数,并且数据正确,但是渲染时出了点问题。
小部件构造函数:
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
Log.d("TAG", "result" + result);
...... (Over Here)
}
小部件构建:
HorizontalList(List<RestInfos> infos){
_rests = new List<RestInfos>();
_rests = infos;
print("horizontal list "+ _rests.length.toString());
if(_rests.length != 0)
print("horizontal list 1: " + _rests.elementAt(0).name);
}
在主页上,我尝试构建这样的小部件:
child: new ListView(
scrollDirection: Axis.horizontal,
children: new List <Widget>.generate(_rests.length, (int index) {
if(_rests.length == 0) {
//return null;
return new Card();
}
print("hotizontal " + _rests.length.toString());
print("indice "+ index.toString());
print("nome " + _rests.elementAt(index).name);
return new GestureDetector(
child:
new Card(...)
)
答案 0 :(得分:0)
我发现我使用的构造函数正在“破坏”网站的呈现。
我严格按照文档here中的说明进行操作,并将代码更改为以下代码:
class HorizontalList extends StatelessWidget {
const HorizontalList({Key key, @required this.infoList}) : super(key: key);
final List<Infos> infoList;
@override
Widget build(BuildContext context) {
...
}
实际上这很奇怪,因为我在应用程序的其他位置使用了旧方法,没有造成任何问题。
无论如何,这解决了我的问题。