[Flutter] 事件的传递(回调)

在一个子视图上有事件需要操作数据的情况下,应该想到:

  • 由数据的持有者本身(model)进行数据操作
  • 将事件回调到数据持有者进行处理
    在 Flutter 中子视图的事件可以通过闭包函数的形式进行回调
    参考前面的文章[列表的使用和 widget 的封装](https://www.jianshu.com/p/35a98564908d的示例,为 MessageCard 新增一个回调函数。
class MessageCard extends StatelessWidget {
    Message data;
    Function delete; // 点击删除按钮时的回调
    
    // 提供一个语义清晰的构造器
    MessageCard({this.data, this.delete});

    Widget build(BuildContext context) {
      return Column(
       children: <Widget>[
             Text(data.text),
              FloatButton(
                onPressed: delete, 
                label: Text("删除"), 
                icon: Icon(Icons.delete)),
              ],
        ),
    }
}

而对应地在构造 MessageCard 时需要传入闭包函数,并且嵌套在 setSate() 中。

// main.dart
MessageCard(data: item, delete: () {
        setState(() {
            list.remove(item);
        });
});
```““‘
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。