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

2020-08-05  本文已影响0人  BudSwift

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

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);
        });
});
```““‘
上一篇下一篇

猜你喜欢

热点阅读