每当用户单击设备的后退按钮时,我需要更改子小部件内的变量值并调用setState()
. 问题是,当我单击后退按钮时,将调用父窗口小部件的 onWillPopScope() ,而不是子窗口小部件的 onWillPopScope() 。因此,我需要从父级更改子小部件状态的变量值并setstate()
在子小部件内部调用。或者,如果有一种方法可以调用子窗口小部件的 onWillPopScope,它也可以解决我的问题。有什么我可以做的吗?
您只需向子小部件添加一个字段,然后在父小部件中更改该字段的值并调用setState()
.
import 'package:flutter/material.dart';
class Parent extends StatefulWidget {
@override
_ParentState createState() => _ParentState();
}
class _ParentState extends State<Parent> {
String _text;
@override
Widget build(BuildContext context) => Column(
children: <Widget>[
Child(param: _text),
RaisedButton(
child: const Text('CHANGE VALUE'),
onPressed: () => _updateChild('NEW VALUE'),
)
],
);
void _updateChild(String value) {
_text = value;
setState(() {});
}
}
class Child extends StatefulWidget {
final String param;
const Child({this.param});
@override
_ChildState createState() => _ChildState();
}
class _ChildState extends State<Child> {
@override
Widget build(BuildContext context) => Text(widget.param);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3098 次 |
最近记录: |