问题标签 [flutter-futurebuilder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
41998 浏览

flutter - Flutter StreamBuilder 与 FutureBuilder

StreamBuilder和之间的主要区别是什么FutureBuilder

  • 使用什么以及何时使用?

  • 他们打算执行什么任务?

  • 他们每个人如何监听动态列表中的变化?

0 投票
2 回答
5267 浏览

android - FutureBuilder 不等待未来完成

我正在使用 API 调用来获取数据并在 ListView 中显示。

这是未来的构建器类:

问题是,甚至在 _getProjects() 返回结果之前就调用了 debugPrint('Builder'),因此快照在我的 ListView 小部件中作为 null 传递。

这是 _getProjects() 类:

这是完整的代码:

更新: 我对 FutureBuilder 做了一些更改:

我现在收到此错误:

默认情况下 SnapShot 返回此 Snapshot AsyncSnapshot>(ConnectionState.waiting, null, null)

0 投票
2 回答
17027 浏览

flutter - Flutter - 如何更新用于构建 ListView 的 Future/List 的状态(或值?)(通过 FutureBuilder)

我在下面粘贴相关代码,但您可以根据我的伪解释来回答。

我使用 FutureBuilder 来构建一个列表视图。

  • 我首先使用 init() 对 API 进行异步 HTTP 调用,并将其解析为映射为表示 json 结果的对象列表(位置)。
  • 然后将该位置列表返回到Future<List<Location>> _listFuture变量中(这是 FutureBuilder 的未来)。
  • 一旦未来“返回”或“完成”,FutureBuilder 就会启动并使用 ListView.builder/Container/ListTile 循环并构建列表。
  • 在某些时候,我需要一个 onTap() 处理程序(在 ListTile 中),它可以更改所选列表项的背景颜色。
  • 为了支持这一点,我在 Location 类中有一个 backgroundColor 成员(保存 JSON 响应),我默认为所有项目的“#fc7303”(假设所有项目最初都未选中)。然后我想在 onTap() 中将所选内容的背景更改为“#34bdeb”。
  • 我假设我可以调用 setState() 来触发刷新,并且在重绘时会注意到/使用新的背景颜色。

问题是 ListView/Contrainer/ListTile 是由一个

. 我可以将“点击”索引传递给我的 ontap 处理程序,但我不相信我可以让我的 _changeBackground() 只更新所选索引的 backgroundColor 值并调用 setState() 因为你不能直接访问/更新这样的未来(我得到错误ERROR: The operator '[]' isn't defined for the class 'Future<List<Location>>'.

我不确定我是否采取了正确的方法。在这种情况下,我想我总是可以在理论上将“背景”颜色跟踪分离到一个新的单独列表中(在未来之外),并使用来自 onTap() 的对齐索引以这种方式跟踪/引用它。

但是,我不确定这是否总是有效。将来,我可能需要实际更改将来返回的值/状态。例如,想一想我是否希望能够单击列表项并更新“公司名称”。在这种情况下,我将直接更改未来存储的值。我想我可以在技术上将新名称发送到服务器并以这种方式完全刷新列表,但这似乎效率低下(如果他们决定“取消”而不保存更改怎么办?)。

任何帮助表示赞赏。谢谢!

这个类实际上保存了列表的相关数据

此类是具有“结果”(成功/错误)消息的父 json 响应。它将上面的类实例化为一个列表来跟踪实际的公司/位置记录

这是使用上述类解析 API 数据并创建 ListView 的状态和有状态小部件

用于将 HEX 转换为整数颜色的辅助类(取自 stackoverflow 上的某处)

谢谢!

0 投票
4 回答
17540 浏览

flutter - 颤振:'未来' 不是 bool 类型的子类型

我试图实现一个简单的登录/注销功能。我的情况是这样的:

我有 2 个页面(登录页面和主页),在其中main.dart,我使用 SharedPreferences 检查用户是否已经登录,如果用户已登录,我在单击按钮时将布尔值设置为 true。

我遇到的问题是,我创建了一个 routeLogin 函数,用于在 Homepage 和 Landingpage 之间进行选择。我得到这个错误:

这是我的代码:

请让我知道我哪里出错了,我是 Flutter 的新手。

0 投票
2 回答
14274 浏览

flutter - 当 TextField 值更改时 Flutter FutureBuilder 刷新

_futureData用于从函数中检索FutureBuilder值后。_loadPhobias()

entry_screen.dart

_loadPhobias()功能似乎没有任何问题。

entry_screen.dart

这是我得到的错误:

FlutterError (setState() 回调参数返回了一个 Future。

_EntryScreenState#51168 上的 setState() 方法是使用返回 Future 的闭包或方法调用的。也许它被标记为“异步”。

与其在 setState() 调用中执行异步工作,不如先执行该工作(不更新小部件状态),然后在 setState() 调用中同步更新状态。)

0 投票
14 回答
36670 浏览

flutter - Flutter:应该只有一项具有 [DropdownButton] 的值

我正在尝试在 Flutter中创建一个下拉按钮。从我的数据库中获取一个列表,然后我将列表传递给我的dropdownButton 一切工作,数据按预期显示,但是当我从中选择一个元素时,我收到此错误:

我尝试将DropdownButton 值设置为 null它可以工作,但是我看不到所选元素

这是我的代码:

我使用futureBuilder从数据库中获取我的列表。

0 投票
5 回答
11989 浏览

flutter - 什么是 Future 以及如何使用它?

我收到以下错误:

它可能是另一种类型而不是int,但基本上模式是

所以...

  • 究竟是什么Future
  • 如何获得我想要获得的实际价值?
  • 当我只有一个时,我用什么小部件来显示我的价值Future<T>
0 投票
1 回答
1653 浏览

flutter - 如何更新内置于 FutureBuilder 中的小部件状态

以前,我曾经ListBuilder生成一个包含 70 个数字的列表并且它可以工作,但是将 70 个数字生成到自定义小部件中需要很长时间,而且当我点击一个数字只是为了更改背景颜色状态时,之前需要几毫秒正在改变的状态。

哦

现在我正在使用 aFutureBuilder来加载屏幕,同时等待生成的 70 个整数。但是当我点击球号时,背景颜色没有更新......就像setState()在 Future ListBuilder 中不起作用一样。

这个问题:“ Flutter - How to update state (or value?) of a Future/List used to build ListView (via FutureBuilder) ”非常相似,但它没有解决我的问题。

这是我在构建方法中的代码

以下是我启动函数状态的方式:

更新:这是Ball小部件的类

0 投票
1 回答
86 浏览

flutter - 如何仅在 FutureBuilder 获取 snapshot.data 后加载列表?

我有一个 JSON 方法,List它在完成后返回一个,

然后我调用它,initState()其中包含一个列表 hello,它将过滤掉 JSON 列表,但它null首先在屏幕上显示一个列表,几秒钟后它加载列表。

这是我在方法FutureBuilder中调用的build()方法,但是如果我在 return 语句之前提供 hello 列表,它表明该方法where()是在 null 上调用的(我用来过滤的列​​表方法hello()

0 投票
1 回答
582 浏览

flutter - Flutter:如何仅在 FutureBuilder 结束后显示浮动操作按钮

我想仅在我未来加载数据(ConnectionState.done)之后才显示一个浮动操作按钮。

它只是在等待期间显示,并不酷。我希望它在未来处理后显示(ConnectionState.done)。

有人给小费吗?

我的代码: