首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在另一个类小部件中获取自定义有状态小部件的值?

在Flutter中,可以通过使用InheritedWidget来在另一个类小部件中获取自定义有状态小部件的值。

首先,创建一个自定义的有状态小部件,并在其中定义一个需要共享的值。例如:

代码语言:txt
复制
class MyStatefulWidget extends StatefulWidget {
  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  String sharedValue = 'Initial Value';

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(sharedValue),
    );
  }
}

接下来,创建一个继承自InheritedWidget的类,用于共享状态。在该类中,定义一个静态方法of用于获取共享的值,并在updateShouldNotify方法中判断是否需要更新共享的值。例如:

代码语言:txt
复制
class MyInheritedWidget extends InheritedWidget {
  final String sharedValue;

  MyInheritedWidget({required this.sharedValue, required Widget child})
      : super(child: child);

  static MyInheritedWidget of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>()!;
  }

  @override
  bool updateShouldNotify(MyInheritedWidget oldWidget) {
    return oldWidget.sharedValue != sharedValue;
  }
}

然后,在需要获取共享值的另一个类小部件中,使用MyInheritedWidget.of(context)来获取共享的值。例如:

代码语言:txt
复制
class AnotherWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final sharedValue = MyInheritedWidget.of(context).sharedValue;

    return Container(
      child: Text(sharedValue),
    );
  }
}

最后,在main函数中,将MyInheritedWidget作为根部件,并将需要共享的值传递给它。例如:

代码语言:txt
复制
void main() {
  runApp(
    MyInheritedWidget(
      sharedValue: 'Shared Value',
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            MyStatefulWidget(),
            AnotherWidget(),
          ],
        ),
      ),
    );
  }
}

这样,AnotherWidget就可以获取到MyStatefulWidget中定义的共享值了。当共享值发生变化时,AnotherWidget也会自动更新。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议在腾讯云官方网站上查找相关产品和介绍。

相关搜索:无法在另一个有状态窗口小部件类flutter中获取有状态窗口小部件类的数据?在颤动中设置/获取有状态小部件的值Flutter如何获取有状态小部件字段的值?如何在flutter中更改有状态小部件的值?在类及其状态中的有状态小部件中定义构造函数如何在构造时使用状态类中的有状态小部件参数,而不将小部件添加到树中?如何从另一个有状态小部件或类更改按钮的状态?从另一个有状态小部件类获取文本字段数据如何更改来自不同类的有状态窗口小部件类中的值?如何在flutter中从另一个小部件的内置更新小部件状态Get Json数据函数在主类中的无状态小部件中有效,但在另一个类中的有状态小部件中不起作用如何在build方法之外访问State类中的有状态小部件变量?使用来自另一个类的有状态小部件的实例访问有状态小部件的变量时,在null上调用getter length如何在更新外部有状态窗口小部件类的实例时更新屏幕在另一个小部件中获取变量的值在Flutter中自定义创建的小部件中获取TextField的值如何将一个文件中的有状态小部件中创建的列表访问到另一个文件中的无状态小部件?Thingsboard问题:如何在自定义小部件中获取当前登录的用户如何在向有状态小部件中的颤动文本添加翻译时停止无限循环如何从另一个类(当为onUnityAdsFinish时)触发有状态窗口小部件中的函数?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1分23秒

如何平衡DC电源模块的体积和功率?

领券