android - 如何在 Flutter 中创建 ListTile 列表?

标签 android ios mobile dart 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:在 null 上调用了方法“add”。 接收者:空 尝试调用:add('ListTile'的实例)

我认为应该可以这样做,尽管我当然可能是错的。预先感谢您帮助我解决我可能愚蠢的问题。

最佳答案

问题有两个:1)您的注释字段可能未初始化。 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],
       ]
     );
  }
}

像这样的可变数据需要处于状态的原因是小部件本身可能会被重建数十次,从而删除所有笔记。 例如,如果您的小部件是动画的子级,则它将每秒重建 60 次。这也意味着您根本不应该在构建方法内部改变数据,因为它的调用频率可能比您想象的要高。

关于android - 如何在 Flutter 中创建 ListTile 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49635217/

相关文章:

PHP 将 Base 64 数据解码为 jpeg 以在 Web 浏览器中查看

ios - 隐藏 uitableview 中的行 - iOS8

android - Firebase 云消息传递 (FCM) 不适用于 kitkat (4.4) 以下的 android 版本

android - 'Make' 和 'Gradle-aware Make' 有什么区别?

ios - 你在哪里存储 Realm 的数据库文件在 ios 上?

ios - 找不到带有 Cocoapods 0.37、Swift、框架的 GoogleAnalytics-iOS-SDK 的 header

c - Symbian 移动操作系统 - 如何编写 C 应用程序?

javascript - 移动固定顶部栏放大/缩小

Android:使用相机源代码时遇到问题

Android O : Service. stopForeground 等效