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

如何在加载GridView时在Scaffold中显示CircularProgressIndicator

在加载GridView时,在Scaffold中显示CircularProgressIndicator可以通过以下步骤实现:

  1. 导入所需的包:
代码语言:txt
复制
import 'package:flutter/material.dart';
  1. 创建一个状态变量来跟踪是否正在加载数据:
代码语言:txt
复制
bool isLoading = true;
  1. 在Scaffold的body部分,使用一个条件语句来决定显示GridView还是CircularProgressIndicator:
代码语言:txt
复制
body: isLoading
    ? Center(child: CircularProgressIndicator())
    : GridView.builder(
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
          crossAxisCount: 2,
        ),
        itemCount: data.length,
        itemBuilder: (BuildContext context, int index) {
          return GridTile(
            child: Image.network(data[index]),
          );
        },
      ),

在这个例子中,假设你有一个名为data的列表,其中包含要在GridView中显示的图像URL。

  1. 在加载数据完成后,将isLoading设置为false,以便显示GridView:
代码语言:txt
复制
// 模拟加载数据的过程
Future.delayed(Duration(seconds: 2), () {
  setState(() {
    isLoading = false;
  });
});

在这个例子中,我们使用了一个延迟2秒的Future来模拟加载数据的过程。在实际应用中,你需要根据你的数据加载逻辑来设置isLoading的值。

这样,当GridView加载数据时,会显示一个CircularProgressIndicator,当数据加载完成后,会显示GridView中的内容。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

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

相关·内容

Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界,继续拖动的话,iOS上会出现弹性效果,而在Android上会出现微光效果。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界,继续拖动的话,iOS上会出现弹性效果,而在Android上会出现微光效果。...addAutomaticKeepAlives:表示是否将列表项包裹在 AutomaticKeepAlive widget 。(加载,如果设置了包裹那么在此列表项滑出屏幕外不会被GC。...默认情况下,Flutter会根据具体平台分别使用不同的ScrollPhysics对象,应用不同的显示效果,当滑动到边界,继续拖动的话,iOS上会出现弹性效果,而在Android上会出现微光效果。...(加载,如果设置了包裹那么在此列表项滑出屏幕外不会被GC。

8.6K51

Flutte部件目录-Material Components 顶

应用程序结构和导航 Scaffold Appbar 上面两个基本部件已经讲过。 BottomNavigationBar ? 底部导航栏可轻松浏览并在单次点击之间顶层视图之间切换。...底部导航栏通常与Scaffold结合使用,Scaffold.bottomNavigationBar参数中提供它。 底部导航栏的type会更改其条目的显示方式。...芯片代表小块的复杂实体,联系人。 ? Tooltip 工具提示提供的文本标签可帮助解释按钮或其他用户界面操作的功能。...将按钮封装在工具提示窗口小部件,以便在按下窗口小部件(或者当用户采取其他适当的操作显示标签。 ? DataTable 数据表显示一组原始数据。 它们通常出现在桌面企业产品。...此外,您还可以使用CircularProgressIndicator小部件。 ? GridView 网格列表由以垂直和水平布局排列的单元格的重复模式组成。 GridView小部件实现了这个组件。

9.4K40

Flutter 构建完整应用手册-图片 顶

用占位符淡入图像 使用默认images小部件显示图像,您可能会注意到它们加载时会弹出到屏幕上。 这可能会让用户产生视觉震撼。...相反,如果你最初可以显示一个占位符,那么它会不会很好,并且图像在加载时会淡入? 我们可以使用与Flutter一起打包的FadeInImage部件来达到这个目的!...使用缓存的图像 某些情况下,在从网络上下载图像缓存图像可能会很方便,以便它们可以脱机使用。 为此,我们将使用cached_network_image包。...除了缓存之外,cached_image_network软件包在加载还支持占位符和淡入淡出的图像!...在这个例子,我们将在图片加载显示一个蜘蛛。

1.2K20

Flutter | 滚动组件,ListView,GridVIew

这种机制带来的好处是父组件可以控制子树可滚动组件的滚动行为,例如,Scaffold 正是使用这种机制 IOS 上实现了点击导航栏回到顶部的功能 Scrollbar Scrollbar 是一个 Material...可滚动组件中有很多都支持 Sliver 的延时构建模型, ListView,GridView ,但是也有不支持改模型的 SingleChildScrollView 主轴和纵轴 滚动组件的坐标描述,...其实此属性的本质上是决定可滚动组件的初始滚动位置是 头 还是 尾 , false ,初始位置头,反之则在 尾 primary:指是否使用 widget 树默认的 PrimaryScrollController...组件; 典型的,一个懒加载的列表,如果将列表包裹在 AutomaticKeepAlive 改了吧划出视口,他也不会被 GC 回收(垃圾回收),他会使用 KeepAliveNotification..._retrieveIcons() 方法模拟异步然后获取数据,成功后将数据保存,然后调用 setState 重新构建 itemBuilder ,如果是最后一个,并且小于200 则加载数据,大于 200

8.4K20

Flutter 加载网络图片的几种方式

对很多移动应用来说,加载网络图片是很常见的基本功能。Android中常用Glide等图片库。Flutter提供了Image组件来展示不同类型的图片。...加载网络图片有几种方式: Image.network FadeInImage.memoryNetwork 使用cached_network_image的CachedNetworkImage 使用Image.network...加载图片 根据URL加载图片,使用Image.network构造器 Image.network( 'https://raw.githubusercontent.com/flutter/website...有默认占位图和淡入效果 图片加载过程,给用户展示一张默认的图片,能提高用户体验。 使用FadeInImage组件来达到这个功能。FadeInImage能处理内存,App资源或者网络上的图片。...( placeholder: CircularProgressIndicator(), imageUrl: 'https://github.com/flutter/website/blob/master

2.9K20

【Flutter】Image 组件 ( cached_network_image 网络图片缓存插件 )

插件实现 ; 安装 cached_network_image 插件 : 搜索插件 : https://pub.dev/packages 搜索 cached_network_image 插件 ;...插件地址 : https://pub.dev/packages/cached_network_image 配置插件 : pubspec.yaml 配置插件 ; dependencies: cached_network_image...CachedNetworkImage , 该组件可以设置加载图片过程显示的 placeholder ; Center( // 图片加载完成之前显示的是 placeholder , 加载完成后显示网络图片...child: CachedNetworkImage( // 加载网络图片过程显示的内容 , 这里显示进度条 placeholder: (context, url)=>CircularProgressIndicator...placeholder , 加载完成后显示网络图片 child: CachedNetworkImage( // 加载网络图片过程显示的内容

1.4K40

带你快速掌握Flutter图片开发核心技能

在这篇文章,将带着大家一起学习Flutter图片开发以及应用场景的必备技能以及一些经验技巧。...; new Image.file - 从本地文件获取图片; new Image.memory - 用于从Uint8List获取图像; 加载项目中的图片资源,为了让Image能够根据像素密度自动适配不同分辨率的图片...要加载项目中的静态图片,需要一些两步: pubspec.yaml 文件声明图片资源的路径; 使用AssetImage访问图片; 我们《快速上手Flutter开发》的《项目结构、资源、依赖和本地化...Flutter我们可以借助cached_network_image插件,来从网络上加载图片,并且将其缓存到本地,以供下次使用。...不填仅在自己程序包查找 this.matchTextDirection: false,图标是否按照图标绘制方向显示 }); 首先我我们需要向使用字体一样,pubspec.yaml配置我们的icon

1.5K10

Flutter | Slivers 系列

最主要的原因就是可以 slives 添加多个组件,如在列表的上面和下面添加更多的内容。...并且 slivers ,如果存在多个列表的话也是支持动态加载的,而不是会一次性全部渲染完 各式各样的 Slivers 组件 SliverList 在上面的例子 SliverList 使用的是 SliverChildBuilderDelegate...这个delegate,它可以实现动态加载,当然 SliverList 也有和 ListView 中一样的非动态加载的delegate,就是SliverChildListDelegate SliverList...,会首先将 SliveAppbar 显示出来,如下: pinned :一直显示顶部,无视滑动,这样就和普通的导航栏差不多了。...区别就是滑动的时候 SliveAppbar 的底部会有一点点影子 snap:滑动停止之后,导航会自动全部显示出来,需要注意的是必须搭配 floating 一起使用,如下: SliverAppBar

1.4K11

ListView&GirdView

本篇文章,我们会进一步对Flutter中常用的Widget进行介绍,有印象的童鞋可能还记得,在前面的文章我们分享了Row和Colunm的用法,我们也使用这两个Widget完成了一些类似列表的操作,...addRepaintBoundaries: true,//添加重绘边界 List children: const [], }) 那么,我们还是来看下具体的用法 我们还是按照惯例Scaffold...ListView.builder()和ListView.custom()的用法基本相同,只不过custom可以根据自己的需要控制Item显示方式,Item显示大小。...itemBuilder返回指定的的Listitem到ListItemWidget对象,返回指定的ListItemWidget对象。...下面来看下GridView GridView ---- GirView的用法和ListView类似,只不过由于GridView可以一列或者一行显示多个Item,所以构造方法中就多了个参 GridView

1.7K20

Flutter可滑动组件

Flutter我们可以使用GridView来实现,使用方式和ListView也比较相似。...() GridView.builder()方法与ListView相似,可以达到当view出现在手机屏幕才进行加载的目的。...在上面讲解ListView.builder() 与 GridView.builder() 提到该方法创造出的可滑动组件可以对其中显示的内容实现懒加载。...对可滑动组件懒加载的原理进行简单归纳后,可总结如下: SliverChildListDelegatechildren是创建视图是传入的一组明确的Widget,展示前这组Widget便已存在;而SliverChildBuilderDelegate...比如视图滚动到底部,我们可能希望做上拉加载更多;比如滚动到一定位置显示一个回到顶部的按钮,点击回到顶部的按钮,回到顶部;比如监听滚动什么时候开始,什么时候结束; Flutter监听滚动相关的内容由两部分组成

7.1K30

Flutter 探索 StreamBuilderimage

偶尔,周期结束之前可能会发出一些值。 Dart ,您可以创建一个返回 Stream 的容量,该容量可以异步进程处于活动状态发射一些值。...在这个博客,我们将探索 Flutter 的 StreamBuilder。我们还将实现一个演示程序,并向您展示如何在您的 Flutter 应用程序中使用 StreamBuilder。...在下面的代码,当 connectionState 值正在等待,将显示一个 CircularProgressIndicator。...如果传递的值不为空,那么当 connectionState 等待,hasData 属性在任何事件首先都将为 true StreamBuilder( initialData: 0, //...other arguments ) 要在 connectionState 等待显示初始数据,应该调整 if snapshot.connectionState = = connectionState.waiting

2.5K00

Flutter | 事件循环,Future

正文 Dart ,没有多线程的概念,所谓的异步操作全部都是一个线程里面执行的, 并且不会造成卡顿的原因就是事件循环(Event Loop), 如下图所示,程序的运行过程,会有两个事件...程序执行过程,如果有异步操作,这个操作就会添加到队列,当发现队列不为空,就会然后不断的从队列取出事件执行 Microtask Queue 一个顶级的队列,只要这个队列里面不是空的,就一定会执行该队列的任务...Event Queue 普通的事件队列,比 Microtask Queue 低了一个等级, Microtask Queue 没有任务的时候才会执行该队列的任务 需要异步操作的代码都会放在 EventQueue...FutureBuilder 的作用就是根据 future 的状态来判断当前页面需要显示哪些 widiget,例如 future 等待的时候显示加载框,完成之后显示内容等。...显示加载框 return CircularProgressIndicator(); }); } } 复制代码 源码浅析 /// State for [FutureBuilder

4.2K10
领券