Flutter加载占位符动画插件flutter_shimmer的使用
Flutter加载占位符动画插件flutter_shimmer的使用
flutter_shimmer
是一个用于创建闪烁效果(Shimmer effect)的Flutter插件,它能很好地指示加载状态,为用户提供更友好的界面设计,替代传统的ProgressBar或普通加载器。
显示一些❤️并给项目加星以支持该项目
Shimmer模式示例
Shimmer Mode | Screenshot | Code Example |
---|---|---|
Play Store Shimmer | PlayStoreShimmer() |
|
Light Mode Shimmer | ListTileShimmer() |
|
Dark Mode Shimmer | ListTileShimmer(isDarkMode: true) |
|
Purplish Mode Shimmer | ListTileShimmer(isPurplishMode: true) |
|
Purplish(Dark) Mode | ListTileShimmer(isPurplishMode: true, isDarkMode: true) |
|
CustomColor Mode | ProfileShimmer(hasCustomColors: true, colors: [Color(0xFF651fff), Color(0xFF834bff), Color(0xFF4615b2)]) |
开始使用
颜色模式
- Light Mode
- Dark Mode
- Purplish Mode
- Custom Color Mode (自定义颜色模式)
可选参数
isRectBox
: 设置形状,默认为圆形isDarkMode
: 是否启用深色模式,默认为浅色模式isPurplishMode
: 是否启用紫色调模式,默认为透明isDisabledAvatar
: 是否隐藏头像,默认显示isDisabledButton
: 是否在ListTileShimmer
中隐藏右侧按钮,默认显示beginAlign
: 设置渐变开始位置,默认为左上角endAlign
: 设置渐变结束位置,默认为右下角hasBottomBox
: 是否显示底部矩形框,默认不显示padding
: 设置内边距,默认16.0margin
: 设置外边距,默认16.0hasCustomColors
: 是否使用自定义颜色,默认使用默认颜色colors
: 当hasCustomColors
设为true时,需提供3种颜色
自定义颜色设置步骤
- 将
hasCustomColors
属性设为true。 - 给
colors
属性提供3种颜色。
ListTileShimmer(
hasCustomColors: true,
colors: [
Color(0xFF1769aa),
Color(0xFF4dabf5),
Color(0xFF2196f3)
],
),
示例代码
以下是一个完整的示例demo,展示了如何在应用中使用flutter_shimmer
:
import 'package:flutter/material.dart';
import 'package:flutter_shimmer/flutter_shimmer.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isDarkMode = false;
bool isPurplishMode = false;
bool isCustomColors = false;
@override
void initState() {
super.initState();
setState(() {
this.isCustomColors = false;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "flutter_shimmer",
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(
title: Text("Flutter_Shimmer"),
),
body: ListView(
children: <Widget>[
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"ListTileShimmer ( onlyWithProfilePicture:true )",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
ListTileShimmer(
bgColor: Colors.yellow,
onlyShowProfilePicture: true,
height: 20,
),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"ListTileShimmer",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
ListTileShimmer(
bgColor: Colors.pink,
height: 20,
),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"YoutubeShimmer",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
YoutubeShimmer(),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"VideoShimmer",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
VideoShimmer(),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"ProfileShimmer",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
ProfileShimmer(
hasCustomColors: true,
colors: [Color(0xFF651fff), Color(0xFF834bff), Color(0xFF4615b2)],
),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"ProfilePageShimmer",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
ProfilePageShimmer(),
Divider(),
Container(
padding: EdgeInsets.all(16.0),
child: Text(
"ProfilePageShimmer(With Bottom Box)",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
ProfilePageShimmer(
hasBottomBox: true,
),
],
),
),
);
}
}
通过上述代码和配置,您可以轻松地在您的Flutter应用程序中实现各种类型的Shimmer效果。希望这些信息对您有所帮助!如果有任何问题或建议,请随时告知。
更多关于Flutter加载占位符动画插件flutter_shimmer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加载占位符动画插件flutter_shimmer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用flutter_shimmer
插件来加载占位符动画的示例代码。flutter_shimmer
是一个非常流行的库,用于在内容加载时显示一个优雅的占位符动画。
首先,你需要在你的pubspec.yaml
文件中添加flutter_shimmer
依赖:
dependencies:
flutter:
sdk: flutter
flutter_shimmer: ^2.0.0 # 请确保使用最新版本
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中创建一个使用flutter_shimmer
的示例。这里是一个简单的例子,展示如何在一个ListView
中使用ShimmerEffect
:
import 'package:flutter/material.dart';
import 'package:flutter_shimmer/flutter_shimmer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Shimmer Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Shimmer Example'),
),
body: Center(
child: ShimmerList(),
),
);
}
}
class ShimmerList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 10,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Shimmer.fromColors(
baseColor: Colors.grey[300]!,
highlightColor: Colors.grey[100]!,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: 40,
height: 40,
color: Colors.transparent,
),
SizedBox(width: 16),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
width: double.infinity,
height: 20,
color: Colors.transparent,
),
SizedBox(height: 4),
Container(
width: double.infinity,
height: 20,
color: Colors.transparent,
),
],
),
],
),
),
);
},
);
}
}
在这个例子中,我们创建了一个简单的ListView
,每个列表项都使用Shimmer.fromColors
来创建一个闪烁的占位符动画。Shimmer.fromColors
允许你自定义闪烁效果的基础颜色和高亮颜色。
baseColor
是闪烁动画的基础颜色。highlightColor
是闪烁动画的高亮颜色。
每个列表项包含一个模拟用户头像的容器、一个模拟标题的容器以及一个模拟副标题的容器。这些容器在闪烁动画中都是透明的,但它们定义了动画的形状和大小。
这个示例展示了如何在Flutter中使用flutter_shimmer
插件来创建漂亮的占位符动画,以提升用户体验。你可以根据需要调整动画的形状、大小和颜色。