【发布时间】:2020-04-03 11:57:02
【问题描述】:
我有一个屏幕小部件和一个自定义小部件。我想在按下自定义小部件的按钮时更改屏幕小部件的值。只是举个例子;
这是使用 CustomWidget 作为子级的 MyScreen 小部件:
import './widgets/my_custom_widget.dart';
class MyScreen extends StatefulWidget {
@override
_MyScreen createState() => _MyScreenState();
}
class _MyScreen extends State<MyScreen> {
bool isChildButtonPressed = false;
@override
Widget build(BuildContext context) {
return Container(
child:MyCustomWidget());
}
}
这是我的自定义小部件
class MyCustomWidget extends StatefulWidget {
@override
_MyCustomWidget createState() => _MyCustomWidget();
}
class _MyCustomWidget extends State<MyCustomWidget> {
@override
Widget build(BuildContext context) {
return Container(
width:200,
height:200,
child: Row(children:[
FlatButton(child:Text("I am child button"),onPressed:(){
//what should I do here to change MyScreen isChildButtonPressed to true?
}),
]
)
);
}
}
上面的代码只是我想要实现的一个示例,但是在我的应用程序中,我有一个长的子小部件多个按钮,我想将小部件存储在一个单独的文件中,但我想更改我父级的一些变量按下子小部件的按钮时的小部件。
我可以做的是将父级的变量声明为全局变量,然后使用 ValueNotifier 但我认为这不是解决此问题的好方法,因为我只需要在一个屏幕中而不是整个应用程序中的这些变量。
我认为我不能使用 Provider 包,因为它只重建子小部件而不是父小部件。
那你有什么建议呢?
谢谢
【问题讨论】:
标签: flutter dart state-management