实践小结

[toc]

传值

前言

1
2
3
4
5
6
7
数据传输一般处理方式:自上而下的一层一层传递数据。

场景: WidgetB数据改变后,WidgetA也随之作出响应。

解决方案1: 参考Flutter知识点: InheritedWidget

解决方案2:Notification,子节点状态变更,发送通知上报。

一、父传给子

1、直接传

Flutter中界面之间参数的传递与接收

二、子传给父

1、Callback(子传给父)

大家都知道回调方法在父子Widget之间传值是非常有用的,特别是用于子Widget向父Widget传值,接。

定义一个回调函数类型

1
typedef clickCallback = void Function(String value);

将回调函数透出子Widget

1
2
3
4
5
6
final clickCallback onClick;

TestWidget({
Key key,
this. onClick,
}):super(key:key);

三、传给其它(给父或给其它)

1、Notification(给其它)

1.自定义notification

1
2
3
4
5
6
7
class TestNotification extends Notification {
final int count;

TestNotification({
@required this.count,
});
}

2.子节点发送通知

1
2
3
4
5
6
7
8
9
new RaisedButton(
textColor: Colors.black,
child: new Center(
child: new Text('点击传递随机数给上层Widget'),
),
onPressed: () {
new TestNotification(count: new Random().nextInt(100)).dispatch(key.currentContext);
},
)

3.父节点使用NotificationListener进行监听子节点发出的通知,并作出响应

1
2
3
4
5
6
7
8
9
new NotificationListener(
onNotification: (TestNotification n) {
scaffoldStateKey.currentState.showSnackBar(new SnackBar(content: new Text('随机数:${n.count}')));
return true;
},
child: new TestAPage(
key: key,
),
)