Flutter FutureBuilder 未更新

2024-03-31

我有一个 Flutter FutureBuilder,需要使用用户提供的新数据进行更新。但是,FutureBuilder 中的 UI 元素不会更新,并且仍然包含旧值。我已经通过打印语句检查了新数据是否已正确加载。问题似乎是 FutureBuilder 在加载新数据时重建小部件。任何帮助表示赞赏。

Future<List<PollItem>> fetchPost(String loc) async {
  return new Future(() async {

    final response = await http
        .post(restip + '/getPosts',
        body: {"data": loc});

    if (response.statusCode == 200) {
      print(response.body);

      // If the call to the server was successful, parse the JSON
      // This function adds json to list
      PollItem.fromJson(json.decode(response.body));

      // list is a list of posts gathered based on the string criteria
      return list;
    } else {
      throw Exception('Failed to load polls');
    }
  });
}

class PollState extends State<Poll> {
  TextEditingController textc = new TextEditingController();

  static String dropDowntext = "City";
  String _name = "Search";
  final _names = [''];


  Widget build(BuildContext context) {

    print("dropdown"+dropDowntext);
    textc.text = _name;
    print(dropDowntext);
    return FutureBuilder<List<PollItem>>(
      future: fetchPost(dropDowntext),
      initialData: [PollItem()],
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          print(snapshot.data[0].question);
          });
}

这是我的全局文件:

 List<PollItem> list = new List();
      factory PollItem.fromJson(Map<String, dynamic> json) {
        int len = json['length'];
        if(listNum!=len) {
          listNum = len;
          list.clear();
          for (int i = 0; i < len; i++) {
            list.add(PollItem(
              answer1: json[i.toString()]['answer1'],
              location: json[i.toString()]['location']

            )
            );
          }
        }
        }

你不需要创建一个Future目的 :

   Future<List<PollItem>> fetchPost(String loc) async {
    final response = await http.post(restip + '/getPosts',body: {"data": loc});

      if (response.statusCode == 200) {
        print(response.body);
        final data = json.decode(response.body);
        int len = data['length'];
        final List<PollItem> newList = List();
        for (int i = 0; i < len; i++) {
          newList.add(PollItem(
          answer1: data[i.toString()]['answer1'],
          location: data[i.toString()]['location']
            )
          );
        }

        print("new list size: ${newList.length}");

        return newList;
      } else {
        throw Exception('Failed to load polls');
      }
      return null;
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter FutureBuilder 未更新 的相关文章

随机推荐

  • C++ 协方差何时是最佳解决方案?

    这个问题 https stackoverflow com questions 1259272 is there a way to forward declare covariance几个小时前被问到这里 让我意识到 我从未在自己的代码中实际
  • 在共享主机上从 HTML 页面生成 PDF 文件

    我在主机上启用扩展等的权限非常有限 但我希望通过 PHP 从 HTML 页面 带有 css 图像 生成 PDF 我有什么想法可以通过近乎零的 CL 访问等来实现这一点吗 最好不是 黑客 依赖服务 因为我将寻求长期使用 生成要呈现到 PDF
  • StrictMode DiskReadViolation 时

    我正在尝试使用 SharedPreferences 来存储我的应用程序的一些用户设置 我的 Activity onCreate 方法中有以下代码 sharedPreferences context getSharedPreferences
  • 将元素附加到二进制文件

    我的目标是 开一个binary文件 将每 100 个值存储 追加 到该文件中 并继续这样做直到完成 为此 我使用以下简单循环来模拟 import numpy as np import random alist c 1 for i in ra
  • Android 以编程方式加载字符串数组

    我有一堂课叫StringsA其中有一个字符串数组 public class StringsA static String Names Larry Moe Curly John 在我的主课上有一个Button and a TextView 我
  • PHP 字符串中不定冠词 (a, an) 的正确形式

    有没有一种简单的方法可以替换字符串中的 a an 以与后面的单词一致 与日期格式中 S 的工作方式非常相似 e g apple apple pear pear echo This is a apple this is a pear gt T
  • 如何在 SQL Server 中将 bigint(UNIX 时间戳)转换为日期时间?

    如何在 SQL Server 中将 UNIX 时间戳 bigint 转换为 DateTime 这对我有用 Select dateadd S unixtime 1970 01 01 From Table 万一有人想知道为什么 1970 01
  • Jenkins - 在主站和从站中运行一项工作

    我设置了一个主站 Linux 和一个Windows从站 并且想在主站和从站上构建一个作业 限制该项目可以运行的位置 选项允许我们将作业绑定到特定的从属设备 但是是否可以将一个作业绑定到主设备和从设备 如何配置 构建步骤 因为在 Window
  • DataGrid SelectionChanged MVVM [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我刚刚开始使用 WPF 和 MVVM 框架 我有一个带有两个 DataGrid 的窗口 我想根据另一个 DataGrid 的行选择在一
  • Java死锁问题

    谁能解释一下为什么这段代码出现死锁 谢谢 public class Deadlock static class Friend private final String name public Friend String name this
  • 如何让gridview中的linkbutton控件打开一个新的ie窗口

    我需要
  • div设置高度相等

    我有 3 个divs 如果另一个我怎样才能使它们相等div高度调整 我想要我的全部div即使内容较少 也可以调整其高度 就像图像中一样div没有数据必须与其他相同 并将读取更多设置在底部 HTML div class column wrap
  • PHP 会话在页面之间丢失 - 行为因服务器而异

    我花了几个月的时间在我的域上开发一个应用程序 总的来说 这是一个简单的概念 在开发过程中 我自己将其托管在自己的域中 但最近将其推到了我们实际的域中 问题是会话不是在页面之间创建或保留的 我一生都无法弄清楚为什么 对下面的代码墙表示歉意 但
  • 我需要用 C 实现巴特沃斯滤波器。获得具有此功能的库或编写代码是否更容易? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的项目是用 C 语言编写的 CodeBlocks 是我的 IDE 我在 Windows Vista 上
  • 图像、php、js 和 html 的缓存

    我想缓存所有文件 但我不知道如何让它工作以便测试通过 我目前有 我添加的最后一行只是为了测试过期和 max age 是否有帮助 它没有 我正在使用http www webpagetest org http www webpagetest o
  • 传递参数查询Access数据库

    我正在使用以下代码并尝试通过给定参数获取数据 我不知道如何将参数值传递给我的查询 Dim con As New OleDb OleDbConnection Dim ds As New DataSet Dim da As OleDb OleD
  • 如何为 ADO.NET 拆分 Oracle sql 语句

    拆分 SQL 语句以发送到 Oracle ADO NET 客户端的正确方法是什么 例如 假设您在文本文件中有以下代码并且想要执行这些语句 CREATE TABLE foo bar VARCHAR2 100 INSERT INTO foo b
  • Jetty 7 + MySQL 配置 [java.lang.ClassNotFoundException: org.mortbay.jetty.webapp.WebAppContext]

    我一直在尝试为 Jetty 配置 c3p0 db 连接池 但我不断收到 ClassNotFoundException 2010 03 14 19 32 12 028 WARN Failed startup of context WebApp
  • 你可以为 React 组件使用 es6 导入别名语法吗?

    我正在尝试执行类似以下操作 但它返回 null import Button as styledButton from component library 然后尝试将其呈现为 import React PropTypes from react
  • Flutter FutureBuilder 未更新

    我有一个 Flutter FutureBuilder 需要使用用户提供的新数据进行更新 但是 FutureBuilder 中的 UI 元素不会更新 并且仍然包含旧值 我已经通过打印语句检查了新数据是否已正确加载 问题似乎是 FutureBu