如何解决如何重建Flutter的根小部件?
我正在使用提供程序包来检测“ todaysTasks”中的更改,但是如您所见,“ todayTasks”取决于存储DayTasks列表的DaysRecords,所以我想要的是每当我重新构建根小部件(即MyApp)时在DaysRecords.recordsList中推送DayTask,但找不到任何方法。 有什么解决办法吗?
class MyApp extends StatelessWidget {
static const routeName = '/root';
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
DayTasks todaysTasks = DaysRecords.recordsList.last;
return ChangeNotifierProvider(
create: (context) => todaysTasks,
解决方法
您可以使用ChangeNotifierProvider包装MyApp的父窗口小部件(我猜是主要方法上是MaterialApp),而不是包装在MyApp内。
然后使用MyApp的build方法初始化对应的提供程序,或使用使用者重新构建(管理您的状态)。
void main() {
runApp(MaterialApp(
home: RootWidget(),));
}
class RootWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => SomeProvider(),child: MyApp(),);
}
}
class MyApp extends StatelessWidget {
static const routeName = '/root';
@override
Widget build(BuildContext context) {
final provider = Provider.of<SomeProvider>(context,listen: true);
// DayTasks todaysTasks = provider.recordsList.last;
return Scaffold(
body: AppBar(
automaticallyImplyLeading: false,),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。