【Flutter】Flutter 使用 Shimmer 实现闪光效果的加载动画占位符

news2024/11/15 11:55:20

【Flutter】Flutter 使用 Shimmer 实现闪光效果的加载动画占位符

文章目录

    • 一、前言
    • 二、为什么选择 shimmer 以及其安装和基本使用
      • 1. 闪光效果在 UI 设计中的价值
      • 2. shimmer 与其他类似工具的比较
      • 3. 如何在 Flutter 项目中安装 shimmer
      • 4. 基本使用方法和代码示例
    • 三、深入了解 shimmer 的属性
      • 1. baseColor 和 highlightColor 的作用
      • 2. 如何自定义 shimmer 效果
    • 四、实际业务中的用法
      • 1. 如何在加载数据时使用 shimmer 作为占位符
      • 2. 结合其他 Flutter 组件使用 shimmer
    • 五、完整示例
    • 六、总结

一、前言

大家好,我是小雨青年,今天我要和大家分享一个非常实用的 Flutter 包——shimmer。这个包能让你轻松地在 Flutter 项目中添加出色的闪光效果。这种效果在很多应用中都有广泛的应用,比如作为加载动画的占位符。

版本信息

  • Flutter 版本:3.10
  • Dart 版本:3.0
  • shimmer 包版本:3.0.0

文章的重点将包括:

  • 为什么选择 shimmer
  • 如何安装和基本使用
  • 深入了解其属性
  • 在实际业务中如何应用
  • 一个完整的业务代码示例

你是否对成为 Flutter 高手充满渴望,想要掌握更多前沿技巧和最佳实践?现在,你的机会来了!

🚀 Flutter 从零到一:基础入门到应用上线全攻略 正在热烈招募参与者!

✅ 这个专栏不仅包括了全面的 Flutter 学习资源,还有实用的代码示例和深入的解析教程。
✅ 专栏内容会持续更新,价格也会随之上涨。现在加入,享受最优惠的价格,抓住属于你的机会!
✅ 想要与其他 Flutter 学习者互动交流吗?点击这里 加入我们的讨论群,一起成长、一起进步。

别再等待,让我们今天就启程,共同开启 Flutter 的精彩学习之旅吧!

二、为什么选择 shimmer 以及其安装和基本使用

1. 闪光效果在 UI 设计中的价值

闪光效果(Shimmer)在 UI 设计中经常被用作一种优雅的加载占位符,它能有效地提升用户体验。当数据还在加载时,闪光效果可以吸引用户的注意力,减少等待的不耐烦感。

2. shimmer 与其他类似工具的比较

市面上有很多实现闪光效果的工具和库,但 shimmer 因其简单易用、高度可定制等特点,成为了开发者的首选。

3. 如何在 Flutter 项目中安装 shimmer

安装 shimmer 包非常简单,只需在你的 pubspec.yaml 文件中添加以下代码:

dependencies:
  flutter:
    sdk: flutter
  shimmer: ^3.0.0

然后运行 flutter pub get,即可完成安装。

4. 基本使用方法和代码示例

使用 shimmer 非常简单,下面是一个基础的代码示例:

import 'package:shimmer/shimmer.dart';

SizedBox(
  width: 200.0,
  height: 100.0,
  child: Shimmer.fromColors(
    baseColor: Colors.red,
    highlightColor: Colors.yellow,
    child: Text(
      '闪光效果',
      textAlign: TextAlign.center,
      style: TextStyle(
        fontSize: 40.0,
        fontWeight: FontWeight.bold,
      ),
    ),
  ),
);

这样,你就成功地在你的 Flutter 项目中添加了一个基础的闪光效果。

这是小雨青年于 2023 年发布在 CSDN 的博客,由于目前采集站侵权行为猖獗,如果你不是在 CSDN 看到本文,麻烦你通过 CSDN 联系我,谢谢你的支持。

三、深入了解 shimmer 的属性

1. baseColor 和 highlightColor 的作用

shimmer 中,baseColorhighlightColor 是两个非常关键的属性。baseColor 定义了文本或组件的基础颜色,而 highlightColor 则定义了高亮或闪光的颜色。通过调整这两个颜色,你可以轻松地为你的应用创建独特的闪光效果。

例如,如果你想要一个蓝色到绿色的闪光效果,你可以这样设置:

Shimmer.fromColors(
  baseColor: Colors.blue,
  highlightColor: Colors.green,
  child: ...
);

2. 如何自定义 shimmer 效果

除了基本的颜色属性外,shimmer 还提供了其他属性,如 directionloopperiod,允许你进一步定制闪光效果。例如,你可以改变闪光的方向,设置循环次数,或调整闪光的速度。

四、实际业务中的用法

1. 如何在加载数据时使用 shimmer 作为占位符

在许多应用中,当数据正在加载时,使用 shimmer 作为占位符可以提供更好的用户体验。例如,当你的应用正在从服务器获取数据时,你可以显示一个带有 shimmer 效果的文本或图片,直到数据加载完成。

2. 结合其他 Flutter 组件使用 shimmer

shimmer 不仅可以用于文本,还可以与其他 Flutter 组件结合使用,如 ListViewCardImage。这为你提供了无限的创意空间,让你的应用看起来更加专业和吸引人。

五、完整示例

在这个示例中,我将展示如何在一个简单的新闻应用中使用 shimmer。当新闻文章正在加载时,我们将显示一个带有 shimmer 效果的标题和摘要。

import 'package:flutter/material.dart';
import 'package:shimmer/shimmer.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Shimmer 示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: NewsPage(),
    );
  }
}

class NewsPage extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('新闻列表'),
      ),
      body: ListView.builder(
        itemCount: 10,
        itemBuilder: (context, index) {
          return Shimmer.fromColors(
            baseColor: Colors.grey[300]!,
            highlightColor: Colors.grey[100]!,
            child: ListTile(
              title: Container(
                color: Colors.white,
                height: 20.0,
                width: double.infinity,
              ),
              subtitle: Container(
                color: Colors.white,
                height: 15.0,
                width: double.infinity,
              ),
            ),
          );
        },
      ),
    );
  }
}

运行结果如下:

六、总结

经过上面的介绍,我相信你对于 shimmer 已经有了一个比较深入的了解。这个包不仅提供了一个简单而又高效的方法来增加你的 Flutter 项目的用户体验,而且它的高度可定制性也使得你可以轻松地为你的应用创建独特的闪光效果。

对 Flutter 感兴趣,渴望深入探索和学习吗?Flutter 从零到一:基础入门到应用上线全攻略 正是你的完美起点!

📘 在这个专栏中,你将发现丰富的 Flutter 学习资源,从代码示例到深入的技术解读,一应俱全。
🛠️ 想要了解如何用 Flutter 构建出色的应用吗?所有的秘诀和答案都在我们的专栏里等着你!
💰 别再犹豫,专栏内容将不断更新,价格也将逐渐上涨。现在就加入,享受最优惠的价格,开启你的 Flutter 探索之旅!

想了解更多?点击这里查看 Flutter Developer 101:入门小册 & 专栏指引

👥 还有,别忘了点击这里 加入我们的讨论群,与其他 Flutter 爱好者一起交流和学习,共同成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/958430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Activity基础之开发环境

工欲善其事必先利其器。 一、Android开发工具AndroidStudio安装以及环境搭建。 AS下载路径:https://developer.android.google.cn/studio AS历史版本下载路径:https://developer.android.google.cn/studio/archive?hlzh-cn 安装过程省略。。。 Jav…

C语言每日一练----Day(12)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:最大连续1的个数 完全数计算 💓博主csdn个人主页&#xff1…

Python数据分析案例30——中国高票房电影分析(爬虫获取数据及分析可视化全流程)

案例背景 最近总看到《消失的她》票房多少多少,《孤注一掷》票房又破了多少多少..... 于是我就想自己爬虫一下获取中国高票房的电影数据,然后分析一下。 数据来源于淘票票:影片总票房排行榜 (maoyan.com) 爬它就行。 代码实现 首先爬虫获…

【css】z-index与层叠上下文

z-index属性用来设置元素的堆叠顺序,使用z-index有一个大的前提:z-index所作用元素的样式列表中必须有position属性并且属性值为absolute、relative或fixed中的一个,否则z-index无效。 层叠上下文 MDN讲解 我们给元素设置的z-index都是有一…

selenium中定位shadow-root,以及获取shadow-root内部的数据

通过shadow-root的父级定位到shadow-root,再通过语句进行操作 两种方法: 第一种,Python种JS实现 第二种,selenium实现 1.0 案例网站 参考某橘色网站 2.0 js语句定位 可在控制台进行测试 测试语句 document.querySelector("ali-ba…

猫头虎博主解析:Spring中的“Unknown return value type: java.lang.Boolean“问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

纽扣电池做CE认证 需要的介绍 EMC检测、RED检测和LVD检测

认证需要测试什么项目 1、EMC检测项目:传导骚扰、辐射骚扰、静电放电抗扰度、射频电磁场辐射抗扰度、电快速瞬变脉)冲群抗扰度、浪涌(冲击)抗扰度、射频场感应的传导抗扰度、工频磁场抗扰度、电压暂降、短时中断和电压变化抗扰度、谐波电流、电压波动和闪烁。 2、LVD检测项目:…

Laf 中大猫谱:让每一只流浪猫都有家

猫谱简介 中大猫谱是一款辅助校园流浪猫救助的开源小程序项目,服务端使用 Laf 云开发。 猫谱主要功能包括:猫咪信息登记、照片分享、拍照识猫、公告和留言等。项目创立的初衷,是解决校园猫猫交流群里的一个常见问题:问猫猫是谁。…

NLP模型(五)——Transformer模型介绍

文章目录 1. Transformer结构2. Encoder结构2.1 Transformer输入2.2 相对位置编码2.3 Self-Attention2.4 Multi-Head Attention2.5 Encoder 整体 3. Decoder结构3.1 带Mask的Multi-Head Attention3.2 Multi-Head Attention 4. 预测层 1. Transformer结构 Transformer的结构如下…

go锁--读写锁

每个锁分为读锁和写锁,写锁互斥 没有加写锁时,多个协程都可以加读锁 加了写锁时,无法加读锁,读协程排队等待 加了读锁,写锁排队等待 w:互斥锁作为写锁 writerSem:作为写协程队列 readerSem:作为读协程队列 readerCoun…

Linkedin营销小技巧,开发客户必看

众所周知,Linkedin是发展业务、拓展人脉的好地方,在过去的一年里,93%的B2B营销人员最常使用该平台来有机分发内容。Linkedin也因为能产生较好的营销效果而成为跨境业务开发的选择平台。 有些企业可以使用Linkedin向潜在用户进行营销和接触&a…

Leetcode1006笨阶乘

思路:以4为一个分组分别进行处理 class Solution:def clumsy(self, n: int) -> int:answer_dict {0:0,1: 1, 2: 2, 3: 6, 4: 7}if n > 4:answer n * (n - 1) // (n - 2) n - 3n - 4else:print(answer_dict[n])return answer_dict[n]print(answer)while n …

2023年京东方便食品行业数据分析(京东数据报告)

​疫情中方便食品的销售一度火爆,但随着当前消费场景的开放,方便食品销售又恢复常态并开始下滑。根据鲸参谋电商数据分析平台的相关数据显示,今年7月份,京东平台方便食品的销量为800万,环比降低约23%,同比降…

基于Spring Boot的人才公寓管理系统设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的人才公寓管理系统设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…

【Vue3 知识第四讲】数据双向绑定、事件绑定、事件修饰符详解

文章目录 一、数据双向绑定二、事件绑定详解2.1 **Vue中的事件绑定指令**2.2 **事件函数的调用方式**2.3 **事件函数参数传递** 三、事件修饰符3.1 **Vue中常用的事件修饰符**3.2 **按键修饰符** 四、属性绑定五、类与样式的绑定5.1 class 类的绑定5.2 style 样式绑定 一、数据…

数据库知识3

DML 语言 SQL 语言 DDL语言 数据库定义语言 创 create 改 alter 删 dropDML语言 数据库操作语言 对表中的数据进行操做 增 insert 删 delete 改 update insert 插入操作 格式1: insert into 表名(列名1,列名2,…) values(values1,values2&…

【全国大学生IoT设计竞赛】安谋科技赛题三等奖分享:灵飞云卫——基于MM32F5的IOT智慧门禁系统

本文参加极术社区和灵动微电子组织的【有奖征集】分享作品传播技术成果,更有奖品等你来领!线上征集活动。 2023年全国大学生物联网设计竞赛已经落下帷幕,下面将为大家分享我们的作品。 团队介绍 参赛单位:河海大学 队伍名称&…

图 Graph

关键词:图、邻接矩阵、邻接表、广度优先搜索、最短路径、深度优先搜索、拓扑排序、最小生成树、单源最短路径、Dijkstra算法、 图的表示 图的两种表示方法:邻接矩阵表示和邻接表表示。 图的广度优先搜索 可处理无向图或有向图 从起始顶点s出发的广度优…

群晖NAS:DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器

群晖NAS:DS Video、Jellyfin等视频电影电视剧海报、背景墙搜刮器 本文只使用豆瓣插件方式,系统默认的 The Movie Database 好注册,但是授权码输入后域名不通过,很麻烦。 1、插件地址: https://www.aliyundrive.com/s…

visual studio编写DLL,python调用

选择第一个c DLL&#xff0c; 然后项目源文件下右击新建项&#xff0c;这里名字随便取&#xff0c;在代码中输入一下内容&#xff1a; #include <iostream>#define EXPORT extern "C" __declspec(dllexport)EXPORT int sub(int a, int b) {return a - b; } 在…