新手在这里扑和编程。几天来,我一直找不到一个合适的解决方案:问题是我需要一个来自DataWidget的变量,在我的MapWidget中。但是当小部件被调用时,我不能传递它(例如:MapWidget(变量:因为MapWidget不是在DataWidget中调用的,而是在main中调用的。因此,我想知道我如何才能访问一个变量,并修改它从一个小部件,是相同的水平/更高的部件树?
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sensors Demo',
theme: ThemeData(
useMaterial3: true,
colorSchemeSeed: const Color(0x9f4376f8),
),
initialRoute: '/',
routes: {
'/': (ctx) => DataWidget(),
MapWidget.routeName: (ctx) => MapWidget()
},
);
}
}
我试图使它成为一个全局变量,但值不更新时修改,所以我离开了我的其他部件的初始值(这是一个GPSPositionValue,所以它的更新continuoulsy),我被告知全局变量不是最好的。我也遇到了riverpod,但没有完全理解如何访问和修改跨部件的值。我想我需要使用状态提供程序,但从我所看到的,我只能在Widget构建中使用它?我不知道如何使用它。希望我的英语够清楚
1条答案
按热度按时间jaql4c8m1#
为了从
DataWidget
类访问更新后的值,可以为其创建一个提供程序。正如你提到的Riverpod,这是获得其参考和更新价值的最简单方法。
只需创建一个返回示例的提供程序:
将您的
StatefulWidget
转换为ConsumerStatefulWidget
,并将相应的State<MyApp>
转换为ConsumerState<MyApp>
。ConsumerState类会自动获取一个ref
作为属性,这样您就可以使用它来获取和查看所需变量的值。有关更多信息,请查看Riverpod文档:Riverpod documentation