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

Flutter -添加新小部件时,列中的StatefulWidgets不会更改

Flutter是一种跨平台的移动应用开发框架,由Google开发和维护。它使用Dart语言编写,并提供了丰富的小部件库,可以快速构建高性能、美观的移动应用程序。

在Flutter中,小部件是构建用户界面的基本单元。StatefulWidgets是一种特殊类型的小部件,它可以在运行时保持状态,并且可以通过调用setState()方法来更新其状态。然而,当向列中添加新的小部件时,列中的StatefulWidgets不会自动更改。

这是因为在Flutter中,小部件的状态是独立管理的。当调用setState()方法时,只有调用它的小部件及其子树会重新构建。如果要在列中添加新的小部件并使其更新,需要在添加新小部件的代码中调用setState()方法。

以下是一个示例代码,演示了如何在列中添加新的小部件并更新状态:

代码语言:txt
复制
import 'package:flutter/material.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  List<String> items = ['Item 1', 'Item 2', 'Item 3'];

  void addItem() {
    setState(() {
      items.add('New Item');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Widget'),
      ),
      body: Column(
        children: [
          RaisedButton(
            child: Text('Add Item'),
            onPressed: addItem,
          ),
          ListView.builder(
            shrinkWrap: true,
            itemCount: items.length,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text(items[index]),
              );
            },
          ),
        ],
      ),
    );
  }
}

在上面的示例中,我们创建了一个StatefulWidget,其中包含一个列和一个按钮。当点击按钮时,会调用addItem()方法,向items列表中添加一个新的项目,并通过调用setState()方法来更新状态。列中的ListView.builder小部件会根据更新后的items列表重新构建,并显示新的项目。

Flutter提供了丰富的小部件和功能,可以满足各种应用场景的需求。对于Flutter开发,腾讯云提供了一些相关产品和服务,例如:

  • 腾讯云移动开发平台:提供了一站式的移动应用开发解决方案,包括移动应用开发、测试、分发等功能。
  • 腾讯云移动推送:提供了高效可靠的移动消息推送服务,帮助开发者实现消息推送功能。
  • 腾讯云移动直播:提供了稳定可靠的移动直播解决方案,支持实时音视频传输和互动功能。

以上是关于Flutter和相关腾讯云产品的简要介绍,如果需要更详细的信息,可以访问腾讯云官方网站进行了解。

相关搜索:在flutter中单击浮动动作按钮时添加新小部件Flutter BLoC不会更新状态或通知屏幕或小部件中的更改Excel -我想创建在插入新列时不会更改的绝对引用Flutter:通过窗口小部件树传递list实例->不会更改list中实例的值当在mounted中添加的新变量发生更改时,视图不会更新单击同一页上的按钮,在Flutter中的列中返回新的小部件列表中包含小部件的Flutter ListView不会在应该更新时进行更新根据值在另一列中的更改时间添加新列添加新列时,无需更改代码即可获取所有列和值的更好方法?其他一些更改( WPF C#)时,DataGrid中的Dependent列不会更改如何让一个有状态的窗口小部件在flutter中随着时间添加新的点?Flutter:我想访问setstate的更改后的值,当我访问它时,它不会显示新的状态值如何更改R数据框中的日期格式并添加到新列中?如何使表中的日期列在新项添加到表中时自动填充?Python Pandas当我尝试在现有数据框中添加列时,我的新列不正确Flutter:当从控制台更改配置时,立即从远程收到客户端中的新配置在时钟中添加0或将0更改为12时,我的span标记不会更新每次在firebase实时数据库中添加新的子项时,如何更新flutter应用程序中的列表当向列表中添加新项时,列中项的宽度会发生变化,CSS NodeJS当我在DF中添加用于创建新列的分组函数时,它不能按预期工作
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter Widget框架之旅 顶

MyScaffold小部件在垂直列中组织其子女。在列顶部,它放置了MyAppBar的一个实例,将应用程序栏传递给一个Text小部件用作其标题。...无状态小部件从他们的父部件接收参数,它们存储在final的成员变量中。 当一个小部件被要求build时,它会使用这些存储的值来为它创建的小部件派生新的参数。...在Flutter中,更改通知通过回调的方式“向上”流,而当前状态则“向下”流向呈现的无状态小部件。重定向这一流程的共同父母是State。...当ShoppingList小部件首次插入到树中时,框架将调用createState函数来创建_ShoppingListState的新实例,以便与该树中的该位置关联。...如果您在修改窗口小部件的内部状态时忘记调用setState,则框架将不知道您的窗口小部件是脏的,并且可能不会调用窗口小部件的build函数,这意味着用户界面可能不会更新以反映已更改的状态。

6.7K20

带你快速掌握Flutter的视图(Widgets)

在Android/iOS中要更新视图,我们可以直接通过对应的方法来操作更改。 在Flutter中,Widget是不可变的,不会直接更新。 相反,我们可以通过操纵Widget的状态来更新它们。...无状态Widget和有状态Widget之间的重要区别在于StatefulWidgets具有一个State对象,该对象存储状态数据并将其传递到树重建中,因此状态不会丢失。...但是,即使Widget是有状态的,如果包含它的父窗口小部件本身不对这些更改(或其他输入)做出反应,父Widget仍然可以是无状态的。...另外推荐大家在widget catalog中查看 Flutter提供的布局。 如何在布局中添加或删除组件?...; 在 Flutter 中,推荐组合多个小的 Widgets 来构建一个自定义的 Widget(而不是扩展它)。

11K10
  • 一位Android程序员入坑Flutter后整理出一份超详细的学习笔记

    Google自2017年第一次提出Flutter,到2018年Beta,再加之RN的各种风波与问题,使得Flutter的热度不断上升,国内不少公司都公布Flutter在其产品中的应用,如美团,闲鱼等。...因为在Flutter看来吗,Widgets的树结构是不可以被更改的,但是如果想更改,则是通过StatefulWidgets的方法,通过setState来更改Data,触发Widgets重绘,从而替换掉之前的...,通过组合(composing)与封装的方法来实现,通过小Widgets组合成需要的新Widgets。...实际上还是需要在Flutter App的Android壳子中注册这个filter,然后在FlutterActivity中拿到存下来。...,官方文档说它会自动回收Element给你,但是事实上每次你都需要根据position生成新的Widgets,所以呢应该是Flutter在内部回收了之前的Widgets并在你重新创建的时候又用上了。

    2.5K00

    Flutter常见开发问题

    但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。...package允许您将新的小部件或功能导入您的应用程序。package和插件之间有一个小的区别。包通常是纯粹用 Dart 编写的新组件或代码,而插件则可以使用本机代码在设备端提供更多功能。...下次重新启动或热加载应用程序时,Flutter 基本上会在现有应用程序之上修补更改,从而提供极快的刷新。 注意:通过热重载或重启所做的更改不会保存在设备 APK 或 IPA 文件中。...更详细地说,一个内容可以改变的动态小部件应该是一个有状态的小部件。无状态小部件只能在更改参数时更改内容,因此需要在小部件层次结构中的位置点上方完成。...包含静态内容的屏幕或小部件应该是无状态小部件,但要更改内容,需要有状态。 你如何处理 Flutter 代码中的缩进和结构?

    6.8K30

    Flutter常见开发问题

    想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。...package允许您将新的小部件或功能导入您的应用程序。package和插件之间有一个小的区别。包通常是纯粹用 Dart 编写的新组件或代码,而插件则可以使用本机代码在设备端提供更多功能。...下次重新启动或热加载应用程序时,Flutter 基本上会在现有应用程序之上修补更改,从而提供极快的刷新。 注意:通过热重载或重启所做的更改不会保存在设备 APK 或 IPA 文件中。...更详细地说,一个内容可以改变的动态小部件应该是一个有状态的小部件。无状态小部件只能在更改参数时更改内容,因此需要在小部件层次结构中的位置点上方完成。...包含静态内容的屏幕或小部件应该是无状态小部件,但要更改内容,需要有状态。 你如何处理 Flutter 代码中的缩进和结构?

    6.7K20

    Flutter中构建布局 顶

    这些小部件安排在ListView中,而不是列中,因为在小设备上运行应用程序时,ListView会自动滚动。...在设计用户界面时,您可以专门使用标准小部件库中的小部件,也可以使用材质部件中的小部件。 您可以混合使用两个库中的小部件,您可以自定义现有的小部件,也可以构建自己的一组定制小部件。...内容 对齐小部件 调整小部件 包装小部件 嵌套行和列 要在Flutter中创建行或列,可以将一个子窗口小部件列表添加到Row或Column窗口小部件中。...每个图像使用一个Container来添加一个圆形的灰色边框和边距。 包含图像行的列使用容器将背景颜色更改为浅灰色。...处理Flutter中的盒子约束:讨论小部件如何受其渲染框限制。 在Flutter中添加资产和图像:说明如何将图像和其他资源添加到应用程序包中。

    43.1K10

    Flutter UI原理

    ,Widget只是UI元素的一个配置数据,并且一个Widget可以对应多个Element,这是因为同一个Widget对象可以被添加到UI树的不同部分,而真正渲染时,UI树的每一个Element节点都会对应一个...因为高效,每次更改Widgets树时,Flutter都使用Elements树来比较Widgets树和现有的RenderObjects。...当我们将Container的颜色更改为红色时,框架将触发重建,这将重新创建整个Widget树,因为它是不可变的。...接下来,借助Elements树中Elements的帮助,Flutter将新Widgets树与旧的Widegt树进行比较。 比较的基本规则:检查旧Widget和新Widget是否来自同一类型。...在我们的示例中, SimpleApp与以前的类型相同,并且具有与相应的SimpleAppRender对象相同的配置,因此不会有任何更改。

    3.4K20

    记住,永远都不要在 Flutter 中使用全局变量

    但是,有些开发人员会使用全局变量,因为他们在一个小团队中,并且在某些情况下不利于更改。 但是,无论应用程序的大小如何,当需要维护代码时,全局变量都会带来挑战。...在下一部分中,你将学习状态管理库和包,它们提供了以更好的方式管理变量状态的更好方法,而不会影响维护过程。...Provider 状态管理包 Provider 状态管理器包被广泛用于收集小部件状态数据并在状态更改时更新小部件。 使用提供程序时,只有受影响的小部件会在数据发生突变时被更新。...要在 Flutter 应用程序启动中开始使用 GetX,请将 get 添加到你的 pubspec.yaml 文件中: dependencies: get: 接下来,导入使用 GetX 库函数和组件时需要的...SetState 方法 之前,我们只介绍了管理状态的 Flutter 包和库。 当你的小部件更改数据值时,可以调用一个名为 setState 的方法。它将导致 UI 根据新状态发生变化。

    3.6K30

    Dart中的const,Flutter,Dart,React Native

    无状态部件在创建和初始化后不会更改它们的内容,而有状态部件维护一些程序运行时可变的状态,例如,响应用户交互。 在此示例中,FlatButton 部件和 Text 部件将绘制到屏幕上。...Text 部件从其状态开始时会有默认的 String。 按下按钮会导致状态更改,Text 部件更新,从而显示新的 String。...插入到窗口部件树中时,它会调用窗口部件的 build 方法,因此可以呈现 UI 的这一部分。...两个常用的部件是行和列。这些部件执行布局以水平(行)或垂直(列)显示其子部件。 使用这些布局部件只需将它们包装在子部件列表中。...由于它也是一个部件,因此添加手势识别只需要将子部件封装在 GestureDetector 部件中。

    6300

    Flutter-从入门到项目 03: Flutter初体验

    = [UIColor blueColor]; 由于 UI 真实的来源可能比实例 view 本身的存活周期更长,你可能还需要在 view 的构造函数中复制此配置 在声明式风格中,视图配置(如 Flutter...要改变 UI,widget 会在自身上触发重建(在 Flutter 中最常见的方法是在 StatefulWidgets 组件上调用 setState())并构造一个新的 Widget 子树 // Declarative...AppDelegate class])); // 因为在 Flutter 世界里面 都是各种部件 // 这里我们简单使用一下 Center 来写一个 文本 runApp(Center(...删除行 ctr + alt + I: 自动缩进对齐 opt + sft + up/down : 上下移动代码 ctrl + tab: 切换文件 shift + command + enter : 行尾自动添加分号...option + enter: 自动导入用到的包 stless: 创建新的 StatelessWidget stful: 创建新的 StatefulWidget ?

    1.1K10

    谷歌 Flutter 1.17 发布

    在此版本中,添加NavigationRail了一个新的小部件,该小部件提供了响应式应用程序导航模型。它是由Google Material Design团队设计和实施的。...2018年10月的PR 22330中增加了对新配置的选择加入支持,但不对新名称提供支持。现有的文本样式名称未更改,因为这样做是一个重大的API更改,可能会影响大多数应用程序。...在进行此更改之前,如果您有任何分析错误,“热重装”将不会重装您的代码。如果分析错误不会影响您当前正在运行的代码(例如在单元测试中),那么这可能会令人沮丧。...他们报告说:“将Flutter添加到核心产品中,可以释放出更高的速度和灵活性,这对于客户及其用户而言,都可以转化为真实可衡量的价值。”...重大变化 与往常一样,每个新版本的Flutter中尽量减少重大更改的数量,这些是此版本中的重大更改。

    3.5K10

    Flutter入门三部曲(2) - 界面开发基础

    StatelessWidgets and StatefulWidgets Flutter中的Widget都必须从Flutter库中继承。...Row, Column- 这些小部件显示水平或垂直方向的子项列表。 Stack - 堆栈显示一个孩子的列表。这个功能很像CSS中的'position'属性。...因为State在每次重建时都没有抛弃,所以可以维护它并且不必每次重建某些东西时都要进行昂贵的计算以获得状态属性。 此外,这是允许Flutter动画存在的原因。...因为Flutter是复用state的。所以,你可能需要重新初始化状态。 如果你的Widget是需要根据监听的数据,发生变化的,那么你就需要从旧的对象中反注册,然后注册新的对象。...下一遍文章:我们将更加深入的对Flutter的界面开发的一些原理 参考文章 Flutter Widgets Flutter中的Key,LocalKey,GlobalKey...

    2.6K00

    开始使用-编写你的第一个Flutter应用程序 顶

    第1步:创建起始Flutter应用程序 第2步:使用外部包装 第3步:添加一个有状态的小部件 第4步:创建一个无限滚动ListView 第5步:添加交互性 第6步:导航到新的屏幕 第7步:使用主题更改UI...如果需要,请使用以下链接中的代码重新开始正轨。 pubspec.yaml(pubspec.yaml文件不会再更改。)...lib/main.dart 第5步:添加交互性 在这一步中,您将为每一行添加可点击的心脏图标。 当用户点击列表中的条目,切换其“收藏”状态时,该词语配对被添加或从一组保存的收藏夹中移除。...lib/main.dart 第6步:导航到新的屏幕 在这一步中,您将添加一个显示收藏夹的新屏幕(在Flutter中称为路由)。 您将学习如何在主路由和新路由之间导航。...列表图标出现在应用程序栏中。 点击它什么也没做,因为_pushSaved函数是空的。 3.当用户点击应用栏中的列表图标时,建立一条路由并将其推送到导航器的堆栈。 此操作会更改屏幕以显示新路由。

    9.5K20

    Flutter 1.22 正式发布

    iOS 14 每当发布新版本的移动操作系统时,我们都会对其进行彻底测试,以查找影响Flutter及其工具的不兼容性或更改。...为使Flutter保持与Material指南的最新水平,我们很高兴地宣布Flutter 1.22中的引入全新的按钮。 该PR并没有尝试就地开发现有的按钮类及其主题,而是引入了新的替换按钮小部件和主题。...新主题遵循Flutter最近在新Material窗口小部件中采用的“规范化”模式。如果您想玩演示,DartPad上有一个很棒的演示。...但是,在此版本中,我们将最佳做法的意见纳入了我们的工具中,甚至在添加新的l10n信息时启用了热重装支持来更新您的应用。 ?...这个想法是要在导航和Flutter的其余部分之间统一模型,同时解决许多问题并添加功能。实际上,这个小例子几乎不涉及Navigator 2.0的内容。

    7.5K20

    【老孟Flutter】Flutter 2 新增的功能

    除了我们的HTML渲染器之外,我们还添加了一个新的基于CanvasKit的渲染器。我们还添加了特定于Web的功能,例如Link小部件,以确保在浏览器中运行的应用感觉像Web应用。...此外,内置的上下文菜单已添加到Material和Cupertino设计语言的TextField和TextFormField小部件中。最后,添加了抓手 到ReorderableListView小部件。...此外,Cupertino设计语言实现中还添加了一些iOS小部件。 新的CupertinoSearchTextField提供了iOS搜索栏UI。...可用的修复程序列表,如带小灯泡的快速修复程序,可帮助您单击鼠标来更改代码。...即使我们尚未捕获所有已弃用的API作为数据来提供Flutter Fix,我们仍将继续从先前已弃用的API中添加更多信息,并将在未来的重大更改中继续这样做。

    7.9K20

    Flutter入门三部曲(2) - 界面开发基础

    StatelessWidgets and StatefulWidgets Flutter中的Widget都必须从Flutter库中继承。...Icon - 用于显示Flutter的内置Material和Cupertino图标。 Container - 在Flutter中,相当于div。...Row, Column- 这些小部件显示水平或垂直方向的子项列表。 Stack - 堆栈显示一个孩子的列表。这个功能很像CSS中的'position'属性。...因为State在每次重建时都没有抛弃,所以可以维护它并且不必每次重建某些东西时都要进行昂贵的计算以获得状态属性。 此外,这是允许Flutter动画存在的原因。...因为Flutter是复用state的。所以,你可能需要重新初始化状态。 如果你的Widget是需要根据监听的数据,发生变化的,那么你就需要从旧的对象中反注册,然后注册新的对象。

    1.6K20

    Flutter简单介绍以及 Hello World解析

    当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同, 以确定底层渲染树从一个状态转换到下一个状态所需的最小更改(译者语:类似于React/Vue中虚拟DOM的...虽然父项ShoppingListItem在重建时创建了一个新实例,但该操作开销很小,因为Flutter框架会将新构建的widget与先前构建的widget进行比较,并仅将差异部分应用于底层RenderObject...当ShoppingList首次插入到树中时,框架会调用其 createState 函数以创建一个新的_ShoppingListState实例来与该树中的相应位置关联(请注意,我们通常命名State子类时带一个下划线...当这个widget的父级重建时,父级将创建一个新的ShoppingList实例,但是Flutter框架将重用已经在树中的_ShoppingListState实例,而不是再次调用createState创建一个新的...如果在修改widget的内部状态后忘记调用setState,框架将不知道您的widget是”dirty”(脏的),并且可能不会调用widget的build方法,这意味着用户界面可能不会更新以展示新的状态

    9910

    【Flutter】自定义滚动开关

    它的工作就像房子的电源开关。 本文中,我们将探讨Flutter中 的**Custom Rolling Switch in Flutter。...pub地址:https://pub.dev/packages/lite_rolling_switch 介绍 在Flutter中,开关是一个小部件,用于在两种选择(ON或OFF)之间进行选择。...假设此属性的价值回报为true,则此开关为ON,为OFF则为false。当此属性无效时,开关小部件会失效。 该演示视频展示了如何在颤动中创建自定义滚动开关。...它显示了在用户按下按钮后进行的切换交互,该开关将滚动到具有动画效果的另一侧,并且在滚动该开关时将更改图标和文本。...在小部件内,我们将添加一个列小部件。在此小部件中,我们将添加mainAxisAlignment为center。在内部,我们将添加带有样式的文本。

    33.4K60

    Flutter 凉了吗?

    我更像是一个后端开发人员,所以当涉及到严重依赖它的东西时,我只想要一些简单的东西。这就是Flutter在我眼中闪耀的地方。 UI通过将不同的小部件组合在一起并修改它们以适合你的App外观来创建。...这只是Flutter提供的小部件中的几个,除这些之外还有很多。使用这些小部件,我们可以构建一个非常简单的UI: Flutter像一个拥有各种各样道具的魔术师,使你能轻而易举地构建App的主题。...每个小部件的文本样式必须手动地一个一个设置,但这仍然很简单: 为了进一步提高效率,Flutter可以热重新加载应用程序,因此您无需在每次更改UI时重新打开它。...考虑到Dart和Flutter的大量可用的库,这根本不是问题。是否有兴趣在你的应用中投放广告?有这方面的库。想要新的小部件吗?有这方面的库。...,BLoCs和SQLite在处理Flutter中的数据时是一个很好的组合(https://medium.com/@erigitic/using-streams-blocs-and-sqlite-in-flutter

    3.1K20

    Flutter 旋转轮

    在在本文中,我们将探讨 “Flutter 中的旋转轮”。我们还将在flutter应用程序中使用「flutter_spinwheel」包来实现带有自定义选项的「Spinwheel」演示程序。...**onChanged:**此 属性用于在每次更改选择时从微调器菜单返回所选值的回调。 「select」:此 属性用于选择(突出显示)圆的扇区。范围是0(项目大小)。想象它就像一个数组。...**在此构建器中,我们将添加itemCount和itemBuilder。在itemBuilder中,我们将导航容器小部件。在小部件内,我们将添加一个边距,即容器的高度。...他的子属性,我们将添加一个列小部件。在此小部件中,我们将添加两个文本,分别是问题和答案。...项「以外的所有选项,应当绘制边框」指令**确定是否应绘制边框,「onChanged」表示每次更改选择时从微调器菜单返回所选值的回调。

    8.9K20
    领券