Flutter动画加载状态插件animated_state_loader的使用
Flutter动画加载状态插件animated_state_loader的使用
预览
特性
以下是该插件的一些特性展示:
-
加载动画预览:
-
成功动画预览:
-
错误动画预览:
-
信息动画预览:
功能列表:
- 动画检查、错误、加载和信息图标
- 可自定义持续时间、颜色、线条宽度以及底部内容小部件(如果需要)
- 可自定义背景透明度、容器颜色和圆角半径
使用方法
基本示例:
AnimatedStateLoader(
size: 60, // 设置动画图标的大小
animationType: AnimationType.loading, // 设置动画类型为加载
child: Scaffold(
body: Container(),
),
);
更多示例请参考GitHub仓库中的示例代码。
完整示例Demo
下面是一个完整的Flutter应用示例,展示了如何在不同的状态下(如加载、成功、失败)切换动画:
import 'package:animated_state_loader/animated_state_loader.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
AnimationType _currentAnimationType = AnimationType.loading;
void _incrementCounter() async {
setState(() {
_counter += 1; // 增加计数器
_currentAnimationType = AnimationType.loading; // 设置当前动画为加载
});
await Future.delayed(
const Duration(seconds: 2), // 模拟延迟操作
);
setState(() {
// 根据计数器值决定下一个动画是成功还是失败
_currentAnimationType =
_counter % 2 == 0 ? AnimationType.success : AnimationType.error;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return AnimatedStateLoader(
size: 60, // 设置动画图标的大小
animationType: _currentAnimationType, // 设置当前动画类型
content: Text( // 设置底部内容文本
_currentAnimationType == AnimationType.loading
? 'Loading...' // 当前动画为加载时显示"Loading..."
: (_counter % 2 == 0)
? 'Success' // 当前动画为成功时显示"Success"
: 'Failure', // 当前动画为失败时显示"Failure"
style: const TextStyle(
fontSize: 18,
),
),
child: Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:', // 提示文本
),
Text(
'$_counter', // 显示当前计数器值
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter, // 点击按钮触发计数器增加和动画切换
tooltip: 'Increment',
child: const Icon(Icons.add),
),
),
);
}
}
更多关于Flutter动画加载状态插件animated_state_loader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter动画加载状态插件animated_state_loader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用animated_state_loader
插件的示例代码。这个插件通常用于在加载数据时显示动画状态。
首先,确保你已经在pubspec.yaml
文件中添加了animated_state_loader
依赖:
dependencies:
flutter:
sdk: flutter
animated_state_loader: ^0.4.0 # 请使用最新版本号
然后运行flutter pub get
来获取依赖。
接下来,在你的Flutter应用中,你可以按照以下方式使用AnimatedStateLoader
:
import 'package:flutter/material.dart';
import 'package:animated_state_loader/animated_state_loader.dart';
import 'package:fluttertoast/fluttertoast.dart'; // 可选,用于显示加载完成提示
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Animated State Loader Demo'),
),
body: Center(
child: AnimatedStateLoaderExample(),
),
),
);
}
}
class AnimatedStateLoaderExample extends StatefulWidget {
@override
_AnimatedStateLoaderExampleState createState() => _AnimatedStateLoaderExampleState();
}
class _AnimatedStateLoaderExampleState extends State<AnimatedStateLoaderExample> {
bool isLoading = true;
String data = '';
@override
void initState() {
super.initState();
// 模拟数据加载
Future.delayed(Duration(seconds: 2), () {
setState(() {
isLoading = false;
data = '数据加载完成!';
});
Fluttertoast.showToast(msg: "数据加载完成!"); // 可选,显示加载完成提示
});
}
@override
Widget build(BuildContext context) {
return AnimatedStateLoader(
active: isLoading,
loader: Center(
child: CircularProgressIndicator(), // 加载动画
),
child: Center(
child: Text(
data,
style: TextStyle(fontSize: 20),
),
),
);
}
}
在这个示例中:
- 我们创建了一个
AnimatedStateLoaderExample
类,它是一个StatefulWidget
。 - 在
_AnimatedStateLoaderExampleState
类中,我们定义了一个isLoading
状态变量,初始化为true
,表示正在加载数据。 - 使用
Future.delayed
来模拟数据加载过程,2秒后将isLoading
设置为false
,并更新数据内容。 AnimatedStateLoader
组件根据isLoading
状态显示加载动画或实际数据。当isLoading
为true
时,显示loader
中的CircularProgressIndicator
;当isLoading
为false
时,显示child
中的Text
组件。
这样,你就成功地使用了animated_state_loader
插件来在Flutter应用中显示加载状态动画。