首页
学习
活动
专区
工具
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时)触发有状态窗口小部件中的函数?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter常见开发问题

想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。...这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。...setState() 本质上是一种告诉应用程序使用新值刷新和重建屏幕的方法。 什么是有状态和无状态小部件? TL;DR:允许您刷新屏幕的小部件是有状态小部件。没有状态的小部件是无状态的。...更详细地说,一个内容可以改变的动态小部件应该是一个有状态的小部件。无状态小部件只能在更改参数时更改内容,因此需要在小部件层次结构中的位置点上方完成。...函数是 Dart 中的第一类对象,可以作为参数传递给其他函数。使用 Android (的回调对于简单的回调有太多的样板代码。

6.7K20

Flutter常见开发问题

但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。...这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。 拖拽不是比在代码中制作布局更容易吗? 在某些方面,确实如此。...setState() 本质上是一种告诉应用程序使用新值刷新和重建屏幕的方法。 什么是有状态和无状态小部件? TL;DR:允许您刷新屏幕的小部件是有状态小部件。没有状态的小部件是无状态的。...更详细地说,一个内容可以改变的动态小部件应该是一个有状态的小部件。无状态小部件只能在更改参数时更改内容,因此需要在小部件层次结构中的位置点上方完成。...函数是 Dart 中的第一类对象,可以作为参数传递给其他函数。使用 Android (的回调对于简单的回调有太多的样板代码。

6.8K30
  • 为Flutter应用程序添加交互性 顶

    如何创建自定义小部件。 无状态和有状态小部件之间的区别。 你如何修改你的应用程序,使其对用户输入做出反应? 在本教程中,您将为仅包含非交互式小部件的应用添加交互性。...如果一个小部件发生变化 - 用户与它进行交互,例如 - 它是有状态的。 小部件的状态由可以改变的值组成,例如滑块的当前值或复选框是否被选中。...当小部件的状态改变时,状态对象调用setState(),告诉框架重绘小部件。 在本节中,您将创建一个自定义有状态小部件。...第4步:将有状态小部件插入小部件树中 将您的自定义状态小部件添加到应用构建方法中的小部件树中。...如果有疑问,首先管理父窗口小部件中的状态。 谁管理有状态小部件的状态? 小部件本身? 父窗口小部件? 都? 另一个对象? 答案是......这取决于依赖高关系。有几种有效的方法可以让你的小部件互动。

    4.2K20

    Flutter中构建布局 顶

    这些小部件安排在ListView中,而不是列中,因为在小设备上运行应用程序时,ListView会自动滚动。...如果您愿意,可以构建仅使用小部件库中的标准小部件的应用程序。 如何在Flutter中布置单个小部件? 本节介绍如何创建一个简单的小部件并将其显示在屏幕上。...在设计用户界面时,您可以专门使用标准小部件库中的小部件,也可以使用材质部件中的小部件。 您可以混合使用两个库中的小部件,您可以自定义现有的小部件,也可以构建自己的一组定制小部件。...以下小部件分为两类:小部件库中的标准小部件和材质组件库中的专用小部件。 任何应用程序都可以使用小部件库,但只有Material应用程序可以使用Material Components库。...有关支持的高程值的列表,请参见材料准则中的高程和阴影。 指定不支持的值将完全禁用投影。

    43.1K10

    【Flutter】自定义滚动开关

    它没有跟上实际状态。为了保持状态,它将调用onChanged属性。假设此属性的价值回报为true,则此开关为ON,为OFF则为false。当此属性无效时,开关小部件会失效。...该演示视频展示了如何在颤动中创建自定义滚动开关。它显示了自定义滚动开关如何在flutter应用程序中使用lite_rolling_switch包工作。...在小部件内,我们将添加一个列小部件。在此小部件中,我们将添加mainAxisAlignment为center。在内部,我们将添加带有样式的文本。...我们将添加填充,并在其子项上添加**LiteRollingSwitch()**小部件以进行自定义。...我们将添加animationDuration手段来延迟动画的开始并添加onChanged表示用户打开或关闭开关的时间。当我们运行应用程序时,我们应该获得屏幕的输出,如屏幕下方的截图所示。

    33.4K60

    Qt Designer中的QWidget属性表介绍

    sizeHint和minimumSizeHint sizeHint:是布局管理器中部件的缺省大小,如果部件不在布局管理中,那么这就是无效的值;该值是Qt中对每个部件大小的建议值,也是缺省值,不能修改。...---- 模式窗口防止其他窗口中的部件获取输入。 此属性的值控制对应窗口可见时阻塞哪些类型的窗口获取输入。...消除歧义(澄清):这是当有多个需要翻译文字的对象有相同文字时,避免出现歧义而额外添加的消除歧义字符,缺省为空,一般歧义字符设置为其所在对象对应类的名字,此消歧参数是为转换器指定注释的首选方法。...2)QIcon.Disabled:部件为禁用状态。 3)QIcon.Active:部件为激活状态,获得了焦点(如鼠标悬停在上面,或Tab键移动焦点)。 4)QIcon.Selected:部件被选中。...当部件的状态切换时,默认的图标绘制函数会自动根据部件的状态重绘图标 Ⅱ、enum State { Off, On } 某些部件还有所谓的开关状态(比如一个按钮可以有按下和弹起两个状态), 则还可以根据

    11.3K20

    【QT】QT窗口部件

    QMainWindow是带有菜单栏、工具栏、状态栏的主窗口类,它有自己单独的布局。布局有一个中心区域,通常是标准的QT部件,也可以是定制的部件,且必须有一个中心小部件。...QT:WindowFlags是QT:WindowType,枚举值的组合,用来设置窗口的属性,f=0表示默认为QT:Widget风格,setWindowState()可设置窗体的状态,参数由QT:WindowStates...QWidget类关系表 窗体状态 模态 窗口间的阻塞情况,是否必须先关闭某一窗口之后,才能对另一个窗口进行操作。 被设置为模态窗口的窗口关闭之后才能对其他窗口进行操作。...---- QDialog是各种对话框的基类,其继承自QWidget,对话框有两种表现形态:形态对话框、非模态对话框。模态对话框就是一个阻塞同一应用程序中其它可视窗口的输入对话框。...用户必须完成当前对话框中的交互操作并且关闭窗口后才能操作当前音乐程序中的其它窗口。模式对话框有它们自己的本地事件循环。exec()方法可使窗口以模态方式运行。

    1.3K20

    Qt 学习记录

    ,它让两个互不相干的对象连接起来,当一个对象的状态改变时,可以通知另一个对象。...函数体内可以使用 Lambda 所在类中的成员变量。 a。将 a 按值进行传递。按值进行传递时,函数体内不能修改传递进来的 a 的拷贝,因为默认情况下函数是const 的。...② 操作符重载函数参数 标识重载的 () 操作符的参数,没有参数时,这部分可以省略。参数可以通过按值(如:(a,b))和按引用(如:(&a,&b))两种方式进行传递。...QMainWindow QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(...status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。

    7.2K50

    初学Qt不会样式表怎么办,打包好的Qt样式表一键生成送给你。

    2.类型选择器(控件类名,如QPushButton) 类型选择器会匹配控件类及其子类的实例,与类选择器的不同的是类选择器匹配控件类实例,但不匹配其子类的实例。 ?...在按钮控件旁边的说明中,有一个警告,翻译过来就是: 警告:如果仅在QPushButton上设置背景色,除非将border属性设置为某个值,否则背景可能不会出现。...伪状态对类型选择器或类选择器指定的所有控件设置它在指定状态时的样式,伪状态以冒号(:)作为分隔 紧跟着选择器,状态伪类很多,上图是从官方截取的,所有的伪状态,都打包进了软件,大家可以下载软件查看,这里就介绍两个初学者常用的...通过合并在小部件祖先(父母,祖父母等)上设置的样式表以及在QApplication上设置的任何样式表,可以获取任意小部件的有效样式表。...Qt控件样式表自定义官方文档,列出了可以使用样式表自定义的Qt小部件。 FdpgQtStyleSheet源码,别忘了给个star再走! FdpgQtStyleSheet软件

    5K73

    深入探究Flutter中的页面导航器:Navigator详解

    AutomaticKeepAliveClientMixin是一个混入类,用于告诉Flutter框架保持页面状态不变,而KeepAlive是一个小部件,用于包裹需要保持状态的子部件。...我们创建了一个继承自StatefulWidget的MyKeepAlivePage小部件,并在其状态类中混入了AutomaticKeepAliveClientMixin。...在build方法中,我们使用super.build(context)来调用父类的build方法,并返回一个包裹在KeepAlive中的Scaffold小部件,以实现路由保持状态的效果。...在Flutter中,可以通过路由参数传递数据,也可以通过全局状态管理器(如Provider、Riverpod等)来共享数据。...在返回时,可以通过await关键字获取pop方法的返回值,从而获取传递的数据。 如何监听页面生命周期事件?

    1.4K20

    从小玩到大的超级玛丽,计算复杂性是怎样的?

    start 部件:玛丽的出生点有一个蘑菇,吃了之后可以变成大玛丽。 finish 部件:需要以大玛丽的状态从左下方进入部件,撞掉一个砖块后才能到达旗杆;如果以小玛丽的状态进入则不能通关。...在第一条路径中,大玛丽进入后需要碰一下怪物变成小玛丽后才能通过狭小的通道,注意右上方的问号方块中有一个蘑菇,玛丽吃了后可以变回大玛丽状态。...clause 部件:该部件中玛丽需要从最左侧到达最右侧才算是验证成功,但是注意到右侧有足够多的火墙,这使得玛丽即使以最快的速度移动也无法避开。...该部件中包含两个 open-close door 部件,其中一个 door 处于打开状态,另一个处于关闭状态。不妨假设现在上方的 door 是打开的,下方的 door 是关闭的。...注意,这里与 NP-hard 证明中不同的是,玛丽总是处于小玛丽状态的。 上图就是 crossover 部件,玛丽需要以最快的速度移动才能从左上到达右下(或从右上到达左下)。

    62610

    OpenCV3 和 Qt5 计算机视觉:1~5

    每当在 Qt 中创建一个新的主窗口时,这三种类型的条形都将添加到该窗口中。 请注意,一个窗口上只能有一个菜单栏和一个状态栏,但是可以有任意数量的状态栏。...如本章前面所述,这是将信号从小部件连接到另一个小部件上的插槽的多种方法之一。 让我们退后一步,看看发生了什么。 同时,请注意刚刚创建的函数的名称。...首先是,在关闭程序时将所有小部件的状态保存在窗口中,并在重新打开程序时将其重新加载。 另一个要求(最后一个要求)是在用户想要关闭程序时提示他们。...如何在 Qt 中创建自定义小部件并使用QPainter对其进行绘制 关于Mat类 在前面的章节中,您非常简要地体验了 OpenCV 框架的Mat类,但是现在我们将更深入地进行研究。...ones:这是另一个静态函数,可用于创建一个矩阵,其所有元素都持有值1。 t:此函数可用于获取Mat类的转置矩阵。 有趣的是,该函数等同于镜子和图像旋转 90 度。 有关更多信息,请参见后续图像。

    6K20

    【QT】图形视图、动画框架

    多个视图可以查看一个场景,场景中包含了各种几个形状的图像项。框架中包含一个事件传播架构,提供了和场景中的图形项进行精确的双精度交互能力,如将场景时间传递给图形项,也可以管理图形项目之间的事件传播。...() //传递一个任意形状来选择场景中指定的图形项 视图 QGraphicsView提供了视图部件,它用来使场景中的内容可视化。...该框架是通过控制Qt的属性来实现动画的,可以应用在窗口的部件和其他QOBject对象上,也可以应用在图像视图框架中。...动画框架的主要类关系图如下: 缓和曲线 使用 enum QEasingCurve::Type来设置缓和曲线,枚举值如下: 动画组 使用QAnimationGroup类可以实现复杂的动画,它的两个子类...状态机框架 状态机框架提供一些类来创建和执行状态图,状态图为一个系统如何对外界进行反应提供了一个图形化模型,该模型通过定义一些系统可能进入的状态以及系统怎样从一个状态切换到另一个状态来实现的。

    1.6K30

    Qt5-QtWidgets篇

    自定义信号和槽位函数 自定义信号 写在类的signals下,返回值为void,可以有参数,支持重载,不需要实现 自定义槽函数 不能写在signals下,public slots[公共的槽函数] 5.4...(label1); 铆接部件 QDockWidget * 铆接部件可以有多个 + QDockWidget * dockWidget = new QDockWidget("浮动",this);...,找基类 自定义组件 add new -> 设计师类 使用自定义组件 查看基类[如widget] 从界面库中拖出来一个widget组件,然后点击提升为,写入类名 [设置全局后可以直接在右键中显示] 3...实际上就是objectName指定的值 伪状态 :active 当小部件驻留在活动窗口中时,将设置此状态 :checked 该控件被选中时候的状态 :hover 鼠标在控件上方 :pressed...该控件被按下时的状态 :disabled 该控件禁用时的状态 :first 该控件是第一个(列表中) :focus 该控件有输入焦点时 动画 QPropertyAnimation

    1.5K20

    【QT】QT样式表语法

    Qt样式表 Qt样式表介绍 Qt样式表是一个可以自定义部件外观的强大机制,样式表的概念、术语、语法均受到HTML层叠样式表(CSS)的启发。...样式表中一般不区分大小写,如color与COLOR表相同属性,但类名、对象名以及Qt属性名区分大小写。 声明中的多组"属性 : 值"列表以分号;隔开。...如: 鼠标悬停在有一个被选中的QCheckBox部件上时才应用规则: QCheckBox:hover:checked{color:white} 3.伪状态可通过逗号达到逻辑或效果。...如: 鼠标悬停或勾选时,应用后面的样式 QCheckBox:hover,checked{color:white} 4.伪状态与子部件联合使用。...此例中QPushButton#okButton代表的是单一对象,而不是一个类的所有实例,所以okButton的文本颜色会是灰色的。同样的有伪状态的比没有伪状态的优先。

    1.6K31

    如何在 Flutter 中设置背景图像【Flutter专题16】

    本教程将向您展示如何在 Flutter 中设置背景图像。 在 Flutter 应用程序中设置背景图像的常用方法是使用DecorationImage....设置背景图像使用 DecorationImage 您可能已经熟悉Container小部件。Container 的构造函数有一个名为decoration的参数,用于在 child 后面绘制装饰。...对于该参数,您需要传递一个Decoration值。Flutter 中有一些Decoration类。...该参数的值默认为true,这会导致调整小部件的大小,使其不与屏幕键盘重叠。...还可以定义图像应如何刻入可用空间并设置图像的不透明度。如果应用程序包含可能触发屏幕键盘的文本字段,您还需要处理如上所示的情况。 对于其他自定义,您可以阅读我们的教程,?

    12.1K21

    图解小程序的特征与架构,及其应用机制

    它通过 JavaScript Bridge 从扩展的本机功能中获取结果。如下图所示,演示了当 API 被调用时,数据在小程序中的流转。...这里的渲染可以认为是无状态的,所有的状态都会存储在worker中。 那么这么做有什么好处呢?其实,分离视图层和逻辑层的好处有如下几点: 方便多个小程序页面之间的数据共享和交互。...例如,当用户购买旅行的火车票时,智能助手上的小程序小部件会立即显示火车的最新状态。用户可以点击这个小部件并跳转到小程序的全屏页面以获取更多详细信息。...在这种情况下,小部件通常需要与其对应的小程序共享数据(例如,保持一致的登录状态)。因此,小程序和页面拥有相同的数据访问权限。...快应用可以以两种形式运行:快应用页面形式,如原生应用页面,以及在场景中呈现信息的小部件形式。两者适配不同的用户需求,在多种场景下将系统与小程序连接为一体。

    2K10

    【译】Flutter架构综述

    从底层到顶层,我们有: 基础类和构件服务,如动画,绘画和手势,在底层基础上提供了常用的抽象。 渲染层提供了一个处理布局的抽象。通过这一层,你可以建立一个可渲染对象的树。...应用程序在所有版本的操作系统上看起来和感觉是一样的,即使操作系统改变了其控件的实现。 Composition 小部件通常由许多其他小的、单一用途的小部件组成,这些小部件组合起来可以产生强大的效果。...相反,它们的唯一目的是控制另一个部件的布局的某些方面。Flutter还包括利用这种组合方法的实用工具部件。...例如,如果一个小组件有一个计数器,每当用户点击一个按钮时就会递增,那么计数器的值就是该小组件的状态。当该值发生变化时,该小组件需要重新构建以更新其UI部分。...随着应用程序的增长,更先进的状态管理方法,减少了创建和使用有状态小部件的仪式,变得更有吸引力。

    5.6K10

    必读~苹果iOS小组件Widget设计终极完全指南

    小组件尺寸 可用的窗口小部件尺寸(称为小,中,大) 无论小部件的大小如何,它都应始终专注于一件事。在大多数情况下,小部件会根据您应用的主要功能提供信息。...单元格样式:每个可点击的单元格包含不同的元素。有了多个点击目标支持,每个单元格都可以指向应用程序中的不同位置。 内容样式:用来展示你的应用中最常用的内容。...如您所见,“填充”样式中只有一个“点击目标”,而其它的则有多个点击目标。 点击目标 点按目标是在点击时将执行特定操作的区域。小窗口小部件只有一个点击目标。...003.另一个设计案例-Duolingo Duolingo提供游戏化的学习经验。学习者可以通过学习赚取宝石,以购买可解锁的物品。因此,应用中圆环进度条非常重要,也是激励学习者最重要的一环。...可以自定义的小部件 小部件还使用户对小部件显示的内容有一些偏好。例如,您可以在“天气”小部件中编辑位置。用户最终还可以拥有具有不同配置的,同一小部件的两个实例。

    7.5K30

    Flutter 中自定义动画底部导航栏

    在这个博客中,我们将探索Flutter中的自定义动画底部导航栏。我们将看到如何实现自定义动画底部导航栏的演示程序以及如何在您的 Flutter 应用程序中使用它。...介绍: 显示在应用程序底部的Material小部件,用于在几个视角中进行选择,通常在 3 到 5 范围内的某个位置。底部导航栏包含各种选项,如文本标签、图标或两者。...它提供了应用程序的高级视角之间的快速导航。对于更大的屏幕,侧面导航可能更合适。 这个演示视频展示了如何在 flutter 中使用自定义的底部导航栏。...它展示了自定义底部导航栏将如何在您的 Flutter 应用程序中工作。它显示当用户点击底部导航栏图标时,它们将被动画化并显示标签文本。当用户点击任何图标时,颜色也会发生变化和动画。...这是我对用户交互自定义动画底部导航栏的一个小介绍。

    9K30
    领券