每当用户单击设备的后退按钮时,我需要在子窗口小部件内更改一个变量值,然后调用setState()
。问题是,当我单击后退按钮时,将调用父窗口小部件的onWillPopScope()而不是子窗口小部件的onWillPopScope()。因此,我需要从父级更改子窗口小部件状态的变量值,并在子窗口小部件内调用setstate()
。或者,如果有一种方法可以调用子窗口小部件的onWillPopScope,它也可以解决我的问题。我有什么可以做的吗?
答案 0 :(得分:2)
您只需要向子窗口小部件添加一个字段,然后在父窗口小部件中更改该字段的值并调用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);
}