首页
学习
活动
专区
工具
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常见开发问题

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

6.7K20

Flutter常见开发问题

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

6.8K30

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

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

4.2K20

【Flutter】自定义滚动开关

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

33.3K60

Flutter构建布局 顶

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

43K10

Qt DesignerQWidget属性表介绍

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

10.3K20

【QT】QT窗口部件

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

1.2K20

Qt 学习记录

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

7.1K50

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

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

4.5K73

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

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

58110

【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.4K31

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

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

1.4K30

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

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

59010

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

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

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

5.8K20

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

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

1.9K10

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

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

7.1K30

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

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

11.2K21

【译】Flutter架构综述

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

5.5K10

Flutter 自定义动画底部导航栏

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

8.8K30
领券