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

Flutter api数据未显示Futurebuilder小部件

Flutter是一种跨平台的移动应用开发框架,它可以帮助开发者快速构建高性能、美观的移动应用程序。在Flutter中,可以使用FutureBuilder小部件来处理异步数据的显示。

FutureBuilder是一个小部件,它接收一个Future作为输入,并根据Future的状态来构建不同的UI。它有以下几个参数:

  1. future:一个Future对象,表示异步操作的结果。
  2. builder:一个回调函数,用于根据Future的状态构建UI。该函数接收两个参数,BuildContext和AsyncSnapshot。BuildContext用于构建UI,而AsyncSnapshot包含了Future的状态和结果。
  3. initialData:一个可选参数,表示Future的初始数据。如果指定了initialData,则在Future还未完成时,builder函数会使用initialData构建UI。
  4. errorBuilder:一个可选参数,用于在Future出现错误时构建UI。它接收一个BuildContext和Object参数,分别表示构建UI的上下文和错误对象。

使用FutureBuilder可以很方便地处理异步数据的显示。当Future还在加载中时,可以显示一个加载指示器;当Future完成时,可以根据结果显示不同的UI;当Future出现错误时,可以显示错误信息。

以下是一个示例代码,演示了如何使用FutureBuilder来显示API数据:

代码语言:txt
复制
Future<ApiResponse> fetchData() async {
  // 发起网络请求获取API数据
  // 这里使用了Dio库来发送HTTP请求
  Response response = await Dio().get('https://api.example.com/data');
  // 解析API响应数据
  ApiResponse apiResponse = ApiResponse.fromJson(response.data);
  return apiResponse;
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('API数据展示'),
        ),
        body: FutureBuilder<ApiResponse>(
          future: fetchData(),
          builder: (BuildContext context, AsyncSnapshot<ApiResponse> snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              // 正在加载中,显示一个加载指示器
              return Center(
                child: CircularProgressIndicator(),
              );
            } else if (snapshot.hasError) {
              // 出现错误,显示错误信息
              return Center(
                child: Text('Error: ${snapshot.error}'),
              );
            } else {
              // 数据加载完成,显示API数据
              ApiResponse apiResponse = snapshot.data;
              return ListView.builder(
                itemCount: apiResponse.data.length,
                itemBuilder: (BuildContext context, int index) {
                  return ListTile(
                    title: Text(apiResponse.data[index].title),
                    subtitle: Text(apiResponse.data[index].description),
                  );
                },
              );
            }
          },
        ),
      ),
    );
  }
}

在上面的示例中,fetchData函数用于发起网络请求获取API数据。在MyApp小部件的build方法中,使用FutureBuilder来处理异步数据的显示。根据Future的状态,构建不同的UI:当连接状态为waiting时,显示一个加载指示器;当出现错误时,显示错误信息;当数据加载完成时,使用ListView.builder来显示API数据。

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mpp)

希望以上信息对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter 构建完整应用手册-联网 顶

从互联网上获取数据 从大多数应用程序获取互联网上的数据是必要的。 幸运的是,Dart和Flutter为这类工作提供了工具!...路线 使用http包发出网络请求 将响应转换为自定义Dart对象 用Flutter获取并显示数据 1.使用http包发出网络请求 http包提供了从互联网获取数据的最简单方法。...3.用Flutter获取并显示数据 为了获取数据并将其显示在屏幕上,我们可以使用FutureBuilder部件Flutter附带FutureBuilder部件,可以轻松处理异步数据源。...我们如何听取消息并显示它们? 在这个例子中,我们将使用StreamBuilder部件来侦听新消息和一个Text 部件显示它们。...StreamBuilder部件将连接到Stream,并在每次接收到事件时使用给定的builder函数请求Flutter重建!

2.5K20

Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )

文章目录 一、FutureBuilder 简介 二、处理 Flutter 中的中文乱码 三、完整代码示例 四、相关资源 一、FutureBuilder 简介 ---- FutureBuilder 本质是组件...: FutureBuilder 构造好以后 , 会自动执行异步操作 , 并返回 Widget 组件 , 因此 FutureBuilder 也是一个组件 , 在不同的状态下显示不同样式的组件 ; FutureBuilder..., 请求后判定是否请求成功 , 如果出错 , 则显示报错信息 , 如果请求成功 , 则显示请求成功的信息 ; 无论怎样 , 最终要返回一个 Widget 组件 ; FutureBuilder 构造函数完整代码示例...switch(snapshot.connectionState){ case ConnectionState.none: return Text("连接...://dart.cn/ Dart 开发者官网 : https://api.dart.dev/ Flutter 中文网 : https://flutterchina.club/ , http://flutter.axuer.com

1.6K20

【 源码之间 - FlutterFutureBuilder 使用

一、前言: 主要就是请求网络api,返回数据,展业界面。根据不同的状态显示不同的界面。...加载中 加载完成 加载失败 ---- 一、示例demo详述: 1.关于异步请求 FutureBuilder需要一个异步任务作为构造入参 通过wanandroid的开发api进行文章列表的获取,...FutureBuilder组件类 FutureBuilder是一个具有泛型T的类,T代表异步的数据类型,这里也就是List FutureBuilder是一个StatefulWidget...另外本人有一个Flutter微信交流群,欢迎小伙伴加入,共同探讨Flutter的问题,期待与你的交流与切磋。...@张风捷特烈 2020.05.10 允禁转 我的公众号:编程之王 联系我--邮箱:1981462002@qq.com --微信:zdl1994328 ~ END ~ ---- 附录: demo

1.1K20

【 源码之间 - FlutterFutureBuilder源码分析

---- 2.示例demo效果 主要就是请求网络api,返回数据,展业界面。根据不同的状态显示不同的界面。 ? ? ?...---- 一、示例demo详述: 1.关于异步请求 FutureBuilder需要一个异步任务作为构造入参 通过wanandroid的开发api进行文章列表的获取, Api.fetch(int page...FutureBuilder组件类 FutureBuilder是一个具有泛型T的类,T代表异步的数据类型,这里也就是List FutureBuilder是一个StatefulWidget...另外本人有一个Flutter微信交流群,欢迎小伙伴加入,共同探讨Flutter的问题,期待与你的交流与切磋。...@张风捷特烈 2020.05.10 允禁转 我的公众号:编程之王 联系我--邮箱:1981462002@qq.com --微信:zdl1994328 ~ END ~ ---- 附录: demo

1.9K10

Flutter异步编程Future与FutureBuilder的实用技巧

,以及FutureBuilder常见的用法?等。 在大家Flutter开发环境过程中遇到无法解决的问题可以在课程问答区进行提问,课程老师会对你进行辅导和帮助; 目录 什么是Future?...练一练 什么是FutureBuilderFutureBuilder是一个将异步操作和异步UI更新结合在一起的类,通过它我们可以将网络请求,数据库读取等的结果更新的页面上。...在构建器函数中,我们检查connectionState的值,并使用AsyncSnapshot中的数据或错误返回不同的窗口小部件。...https://flutter-academy.com/async-in-flutter-futurebuilder/ FutureBuilder的使用?...参考资料 Flutter从入门到进阶实战携程网App 「快速上手Flutter开发系列教程」之线程和异步UI开发指南

2.2K10

FlutterFutureBuilder 异步编程 ( FutureBuilder 构造方法 | AsyncSnapshot 异步计算 )

文章目录 一、FutureBuilder 简介 二、FutureBuilder 构造方法 三、AsyncSnapshot 异步计算 四、相关资源 一、FutureBuilder 简介 ---- FutureBuilder...将 异步操作 与 异步 UI 更新 结合在一起 ; 它可以将 异步操作 的结果 , 异步的 更新到 UI 界面中 ; 异步操作结果 : 网络请求 , 数据库读取 , 等耗时操作 得到的结果 ; 二、FutureBuilder...future; T initialData : 异步计算完成前的初始化数据 ; /// The data that will be used to create the snapshots provided...data 是异步计算接收的最新数据 ; Object?.../ Dart 中文文档 : https://dart.cn/ Dart 开发者官网 : https://api.dart.dev/ Flutter 中文网 : https://flutterchina.club

83020

为什么说Flutter让移动开发变得更好?

最重要的是,我们使用了FutureBuilderFlutter SDK的一部分),它需要我们指定一个Future(回调)和一个构建器函数。...这两个类与API调用结合起来会有以下结果: 这貌似太简单了……现在有没有感觉到用Flutter创建列表很容易,继续探索吧。 下一步我们尝试稍微复杂的布局。...我通过构建用于加载和显示数据的泛型类来实现,这使得我可以重复使用电影和演出的每个布局。如果用Android实现相同的事情,我必须为电影和演出分别使用不同的Activity。...Flutter使用Databinding相同的思想,即将视图/小部件绑定到变量,而无需在Java / Kotlin中手动管理数据绑定,不用专门的绑定文件来桥接XML和Java。...这样,我们的应用程序状态就不会与Views显示的内容不同步。 而Flutter正是这样做的! 还有另外一个问题:你有没有问过为什么在Android上创建工具栏菜单非常复杂?

2K10

Flutter | 定义一个通用的多功能网络请求 Widget

如果没有了解过,那么可以看我这篇文章:Flutter - FutureBuilder 异步UI神器。 这篇文章是早期写的,有些地方写的有些问题,但不重要!...确认网络请求控件所需要的功能 我们从最开始的图中明显能看出来的,其实是有三个功能: 1.请求数据显示 Loading2.正常时返回正常数据,错误时返回错误 Widget3.错误 Widget 可以点击重新请求...请求数据显示 Loading 但是,这里也有一个问题: 我们在最开始定义网络请求工具类的时候,每一个网络请求都是一个方法,而每个方法中都有或者没有参数。...正常时返回正常数据,错误时返回错误 Widget 这就需要我们封装好的网络请求和 FutureBuilder 有一个互动了, 网络请求的逻辑如下: ?...然后在 ConnectionState.done 中判断是否存在数据,如果有的话,就显示传进来的 Widget。 如果返回错误,则返回错误的 Widget。

1.7K31

Flutter 凉了吗?

这就是Flutter在我眼中闪耀的地方。 UI通过将不同的小部件组合在一起并修改它们以适合你的App外观来创建。你几乎可以完全控制这些小部件显示方式,因此你最终总是会得偿所愿。...为了布局UI,可以使用诸如Row,Column和Container之类的小部件。对于内容,有诸如Text和RaisedButton之类。这只是Flutter提供的小部件中的几个,除这些之外还有很多。...5 后端开发 现在大多数App都依赖于某种数据,所有这些数据需要存储在某个地方,以便以后可以显示和使用。因此,在寻找使用新SDK(例如Flutter)创建应用时,牢记这一点非常重要。...或者,如果要将对象存储在数据库中,可以使用相同的模型将其转换为JSON。 如果没有将其显示给用户的方法,这些数据就不是那么有用了。...这就是Flutter带着诸如FutureBuilder或StreamBuilder这样的小部件登场的时候了。

3K20

抖音的强大对手来了,用Flutter手撸一个抖音国际版,看看有多炫

做的前端,后端api则对接的是抖音官方api,由于抖音的官方api更新频繁,导致经常播放不了,所以索性自己来写服务器后端api,那么后端api采用了那些技术咧 springcloud 主要是后台控制面板...国家化按以下步骤 在pubspec.yaml文件加上 flutter: sdk: flutter flutter_localizations: sdk: flutter intl...采用FutureBuilder对界面请求数据异步处理,当加载完成后才播放,效果更佳 代码如下: eturn FutureBuilder( future: videos, builder...,则显示加载的图标loading 当snapshot.connectionState == ConnectionState.done 时,此时数据已经加载完毕,但是加载完毕有可能也没有数据,所以需要判断不同的情况...当加载出现异常情况则显示异常的widget if (snapshot.hasError) { return Column( crossAxisAlignment: CrossAxisAlignment.center

1K20

Flutter | 事件循环,Future

就会然后不断的从队列中取出事件在执行 Microtask Queue 一个顶级的队列,只要这个队列里面不是空的,就一定会执行该队列中的任务, scheduleMicrotask(() { print("Hello Flutter...直接执行的代码 Future.sync(() => print('Hello')); Future.value(() => print('world')); xxx.then() 复制代码 Future Flutter...的作用就是根据 future 的状态来判断当前页面需要显示哪些 widiget,例如 future 在等待的时候显示加载框,完成之后显示内容等。...需要注意的是使用完成之后要进行关闭操作,否则就会泄漏资源 并且 flutter 会一直警告, 上面的这种方式只能有一个监听,如果添加多个监听则就会保存,那么如何添加多个监听呢,可以使用广播的方式,如下...方法中用于生产题目和 x 轴的位置以及动画的执行时间,最后开启动画 build 中其实是很简单的,使用了 AnimatedBuilder 来监听动画,当动画值改变后则会重新 setState(),内部就是一个按钮

4.2K10

一个会做饭的程序员如何每天给女朋友带不同的便当?

该功能有如下三个小点: 1.如何保存截图2.显示截图3.保存截图到手机 如何保存截图 首先说如何保存截图,关于该功能,我也是网上查找资料所得, 地址为:FengY - Flutter学习 ---- 屏幕截图和高斯模糊...显示截图 从 gif 可以看到,在截图以后会先显示一个小菊花,然后弹出当前所截图片,一会以后会消失,这里使用的是 showDialog 配合 FutureBuilder。...因为截图会有一定的延时,并且返回值为一个 Future ,那我们没有理由不用 FutureBuilder,如有不了解 FutureBuilder 的,可以查看我的这篇文章:Flutter FutureBuilder...该功能也有几个难点: 1.SharedPreferences 不能存储对象2.如何判断已经过了七天?...如果你还没有了解过 ExpansionPanelList,那么我建议读我的这篇文章:Flutter ExpansionPanel 超级实用展开控件 剩下的就很简单了,通过数据来判断是否展示 已使用标识

1.1K50

Flutter 刷新页面:通过下拉刷新提升用户体验

集成下拉刷新和状态管理、 当在 Flutter 应用中集成下拉刷新,管理状态就变得尤其重要。Flutter 响应式框架能够在数据更改时,更新应用程序的用户界面。...下拉刷新管理数据 为了有效联合下拉刷新来管理状态,我们可以在众多 Flutter 生态中选择其中一种。...通过正确构建我们的挂件,我们确保 pull-to-refresh 手势被侦测到并有效处理,带来一个舒适的用户体验。...构建用于下拉刷新的小部件 为了实现下拉刷新,我们从可滚动挂件开始,比如 ListView 或者 ScrollView,这些将会是 RefreshIndicator 挂件的 child 内容。...当处理复杂的数据和状态时,考虑使用流 streams 或者 FutureBUilder 挂件来更新 UI,当新数据反应可用时。这保证在应用程序当前状态, UI 还是同步的,即使数据被拉取和更新。

12910

flutter仿BOSS直聘(二),大前端技术实现

先把开源地址提供给大家: github地址: 服务端版本:flutter仿boss直聘服务端. flutter版本:flutter仿boss直聘. 项目效果图: ?...相关技术点 服务端: 基于puppeteer + mongo + nodejs实现爬虫服务器,使用nuxt + koa2 + vue实现服务端渲染以及api服务接口。...Container, Row, Column, Flex, ListView, CustomListView, Wrap, Padding, Center, Future, FutureBuilder,...widget.company.logo, width: 70, height: 70, ), ), )), CustomListView滑动时appBar显示隐藏...title移动到appBar里,可实际上,布局是定制的,实现不了官方的那种效果,于是通过监听ScrollController并计算滚动位置的方式修改state属性让appBar的title根据滚动位置显示隐藏

1.9K20

详解Flutter WebView与JS互相调用简易指南

时,双方共同商定好了的一个协议,JS通过这个name去post对应的信息给FlutterAPI为name.postMessage(‘xxxxxx’))。...JavascriptMessage类暂时只有一个String类型的message成员变量,所以如果需要传递复杂数据,可以通过传递json字符串来解决。...style.visibility = message; } 在上面的例子中,我们点击floatingActionButton后,就会去执行JS中的callJS()方法了,具体UI体现为:将隐藏的段落重新显示...evaluateJavascript()返回值是一个Future,因此我们可以接收JS给我们的返回值,返回值格式请阅读官方API注释。...因此在实际开发中,我这里展示的这种直接将onWebViewCreated中的controller赋值的方法是不可取的,应该是使用FutureBuilder之类的方式去实现比较优雅(我在Gist上有完整的例子

4.9K30
领券