Flutter占位加载动画插件easy_shimmer的使用
Flutter占位加载动画插件easy_shimmer的使用
特性
easy_shimmer
是一个Flutter插件,可以帮助你在任何小部件中添加自适应的闪烁效果(shimmer),适用于Android和iOS平台。
入门指南
easy_shimmer
是一个改进版的闪烁效果插件,你可以将其作为任何Flutter小部件的扩展来使用。
使用方法
以下是一个完整的示例代码,展示了如何在Flutter项目中使用 easy_shimmer
插件:
import 'package:flutter/material.dart';
import 'package:easy_shimmer/easy_shimmer.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Easy shimmer demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const AdaptiveShimmer(),
);
}
}
class AdaptiveShimmer extends StatelessWidget {
const AdaptiveShimmer({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Easy Shimmer Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
// 将任何文本小部件转换为带有闪烁效果的小部件
const Text('Easy shimmer with Text widget').easyShimmer(
baseColor: Colors.grey[300]!, // 基础颜色
highlightColor: Colors.grey[100]!, // 高亮颜色
),
const SizedBox(height: 40), // 间距
// 带有闪烁效果的SizedBox示例
const SizedBox(
height: 200,
width: 200,
).easyShimmer(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
),
const SizedBox(height: 40), // 间距
// 更多示例:带有圆角的Container
Container(
height: 100,
width: double.infinity,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
color: Colors.grey[300],
),
).easyShimmer(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
),
const SizedBox(height: 40), // 间距
// 列表项示例
Row(
children: [
const CircleAvatar(
radius: 24,
backgroundColor: Colors.grey[300],
).easyShimmer(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
),
const SizedBox(width: 16), // 间距
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 200,
height: 16,
color: Colors.grey[300],
).easyShimmer(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
),
const SizedBox(height: 8), // 间距
Container(
width: 150,
height: 16,
color: Colors.grey[300],
).easyShimmer(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
),
],
),
],
),
],
),
),
);
}
}
更多关于Flutter占位加载动画插件easy_shimmer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter占位加载动画插件easy_shimmer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用easy_shimmer
插件来实现占位加载动画的示例代码。easy_shimmer
是一个简单而强大的Flutter包,用于在数据加载时显示占位符动画。
步骤 1: 添加依赖
首先,你需要在pubspec.yaml
文件中添加easy_shimmer
依赖:
dependencies:
flutter:
sdk: flutter
easy_shimmer: ^2.0.0 # 确保使用最新版本,版本号可能需要根据实际情况调整
然后运行flutter pub get
来安装依赖。
步骤 2: 导入包
在你的Dart文件中导入easy_shimmer
包:
import 'package:flutter/material.dart';
import 'package:easy_shimmer/easy_shimmer.dart';
步骤 3: 创建占位符动画
下面是一个完整的示例,展示如何使用EasyShimmer
来创建一个简单的列表占位符动画:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter EasyShimmer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('EasyShimmer Demo'),
),
body: EasyShimmerList(
itemCount: 10, // 占位符的数量
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 50,
height: 50,
color: Colors.grey[300]!,
margin: EdgeInsets.only(right: 16),
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
width: double.infinity,
height: 20,
child: Container(
color: Colors.grey[300]!,
),
),
SizedBox(
width: double.infinity,
height: 12,
child: Container(
color: Colors.grey[300]!,
),
),
],
),
),
],
),
);
},
),
),
);
}
}
解释
EasyShimmerList
:这是一个方便的包装器,用于创建列表占位符动画。itemCount
:指定占位符的数量。itemBuilder
:构建每个占位符项。这里我们创建了一个简单的包含图片和文本的列表项占位符。
运行应用
保存代码并运行应用,你应该会看到一个带有占位符动画的屏幕,这些占位符模拟了一个正在加载的列表。
这个示例展示了如何使用easy_shimmer
创建一个基本的占位符动画。根据你的需求,你可以自定义占位符的样式和布局。