繁体   English   中英

如何在Flutter中创建ListTile的列表?

[英]How does one create a List of ListTile's in Flutter?

我的目标是要有一个ListTiles列表,以便跟踪,可以添加/删除以后可以在ListView中显示的项目。 这是我的代码的简化版本:

class Notes extends StatefulWidget{

  List<ListTile> notes;

  _NotesState createState() => new _NotesState();
}

class _NotesState extends State<Notes>{

  @override
  Widget build(BuildContext context){

     widget.notes.add(new ListTile(title: new Text("Title")));

     return new ListView(
       children: <ListTile>[
          notes[0],
       ]
     );
  }
}

但是我收到以下信息:

NoSuchMethodError:方法'add被调用为null。 接收方:null尝试调用:add(“ ListTile”的实例)

我想应该可以这样做,尽管我可能会误会。 预先感谢您为我的潜在愚蠢问题提供帮助。

问题有两方面:1)您的notes字段可能未初始化。 2)您正在将状态存储在State对象之外。 而是将注释放在状态对象内,然后像这样初始化成员:

class _NotesState extends State<Notes>{
  List<ListTile> notes = [
    new ListTile(title: new Text("Title")),
  ];

  @override
  Widget build(BuildContext context){
     return new ListView(
       children: <ListTile>[
          notes[0],
       ]
     );
  }
}

诸如此类的可变数据需要处于State是,小部件本身可能会被重建数十次,从而擦除了所有注释。 例如,如果您的小部件是动画的子级,则它将每秒重建60次。 这也意味着您根本不应该在build方法内部对数据进行变异,因为您可能会想,它可能会被更频繁地调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM