Flutter动画加载插件flare_loading的使用
Flutter动画加载插件 flare_loading
的使用
flare_loading
是一个基于 Flare 动画的加载小部件,允许你创建自定义的加载小部件或对话框。如果你使用的是 Rive 而不是 Flare,请使用 rive_loading 插件。
安装
在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flare_loading: ^<latest_version>
然后运行 flutter pub get
来安装该插件。
使用方法
基本用法
FlareLoading(
name: 'animation.flr',
startAnimation: 'intro',
loopAnimation: 'circle',
endAnimation: 'end',
);
参数说明:
name
: Flare 动画的路径和名称。until
: 返回一个 Future 的回调函数,用于处理初始化。isLoading
: 如果你想通过布尔值管理加载状态,可以使用这个参数作为until
的替代。loopAnimation
: 循环播放的动画名称。endAnimation
: 当until
完成或isLoading
为false
时播放的结束动画。startAnimation
: 开始时播放的动画名称。height
: 强制设置 Flare 动画的高度,默认情况下它会占据所有可用空间。width
: 强制设置 Flare 动画的宽度,默认情况下它会占据所有可用空间。alignment
: Flare 动画的对齐方式,默认居中。onSuccess
: 动画完成后且isLoading
为false
或until
完成时调用的回调函数。onError
: 当until
失败时调用的回调函数。
可用模式
只有一个动画
如果只需要显示一个动画并停留在最后一帧,则只需指定 startAnimation
:
FlareLoading(
name: 'loading.flr',
startAnimation: 'Loading',
width: 200,
height: 200,
);
开始和循环动画
如果你的动画有一个介绍和一个循环状态,则需要指定 startAnimation
和 loopAnimation
:
FlareLoading(
name: 'loading.flr',
startAnimation: 'Intro',
loopAnimation: 'Looping',
width: 200,
height: 200,
);
结束和循环动画
如果你的动画有一个结束和一个循环状态,则需要指定 endAnimation
和 loopAnimation
:
FlareLoading(
name: 'loading.flr',
endAnimation: 'Complete',
loopAnimation: 'Looping',
width: 200,
height: 200,
);
开始和结束动画
如果你的动画有一个介绍和一个结束状态,并且应该停留在最后一帧,则只需指定 startAnimation
和 endAnimation
:
FlareLoading(
name: 'loading.flr',
startAnimation: 'Intro',
endAnimation: 'Complete',
width: 200,
height: 200,
);
开始、结束和循环动画
如果你的动画有一个介绍、一个结束和一个循环状态,则需要指定 startAnimation
、endAnimation
和 loopAnimation
:
FlareLoading(
name: 'loading.flr',
startAnimation: 'Intro',
endAnimation: 'Complete',
loopAnimation: 'Looping',
width: 200,
height: 200,
);
示例 Demo
下面是一个完整的示例代码,展示了如何使用 flare_loading
插件:
import 'package:flare_loading/flare_loading.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool _isLoading = false;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlareLoading(
name: 'assets/loading.flr',
loopAnimation: 'Loading',
startAnimation: 'Loading',
endAnimation: 'Complete',
width: 200,
height: 200,
fit: BoxFit.fill,
until: () => Future.delayed(Duration(seconds: 5)),
onSuccess: (_) {
print('Finished');
},
onError: (err, stack) {
print(err);
},
),
Expanded(
child: Row(
children: <Widget>[
Expanded(
child: FlareLoading(
name: 'assets/loading.flr',
loopAnimation: 'Loading',
endAnimation: 'Complete',
isLoading: _isLoading,
onSuccess: (_) {
print('Finished');
},
onError: (err, stack) {
print(err);
},
),
),
ElevatedButton(
child: Text('Toggle loading'),
onPressed: () => setState(() {
_isLoading = !_isLoading;
}),
),
],
),
),
],
),
);
}
}
更多关于Flutter动画加载插件flare_loading的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter动画加载插件flare_loading的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,flare_loading
是一个基于 Flutter 的动画加载插件,它利用 Rive(以前称为 Flare)动画引擎来创建和展示复杂的加载动画。以下是如何在 Flutter 项目中使用 flare_loading
插件的详细步骤和代码示例。
1. 添加依赖
首先,在你的 Flutter 项目的 pubspec.yaml
文件中添加 flare_loading
依赖:
dependencies:
flare_loading: ^3.0.0 # 请检查最新版本号
flare_dart: ^2.0.5 # flare_loading 依赖 flare_dart,所以也需要添加
flutter:
sdk: flutter
2. 导入包
在你的 Dart 文件中导入必要的包:
import 'package:flare_loading/flare_loading.dart';
import 'package:flutter/material.dart';
3. 加载 Flare 动画文件
确保你已经有一个 .flr
文件(Flare 动画文件),并将其放在项目的 assets
文件夹中。然后在 pubspec.yaml
中声明这个资产:
flutter:
assets:
- assets/your_flare_animation.flr
4. 使用 FlareLoading 组件
在你的 Flutter 组件中使用 FlareLoading
组件来展示加载动画。以下是一个完整的示例:
import 'package:flare_loading/flare_loading.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flare Loading Example'),
),
body: Center(
child: FlareLoading(
flare: 'assets/your_flare_animation.flr', // 你的 Flare 动画文件路径
animation: 'loading', // 动画名称,在 Flare 编辑器中定义
color: Colors.blue, // 动画颜色
size: 50.0, // 动画大小
isLoading: true, // 是否显示加载动画
),
),
),
);
}
}
5. 控制加载状态
你可以通过控制 isLoading
属性来显示或隐藏加载动画。例如,你可以在一个状态管理类中管理这个状态:
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
bool isLoading = true;
void startLoading() {
setState(() {
isLoading = true;
});
// 模拟一个异步操作,比如网络请求
Future.delayed(Duration(seconds: 2), () {
setState(() {
isLoading = false;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flare Loading Control'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlareLoading(
flare: 'assets/your_flare_animation.flr',
animation: 'loading',
color: Colors.blue,
size: 50.0,
isLoading: isLoading,
),
SizedBox(height: 20.0),
ElevatedButton(
onPressed: startLoading,
child: Text('Start Loading'),
),
],
),
),
);
}
}
在这个示例中,当你点击按钮时,startLoading
方法会被调用,它会启动加载动画并在两秒后停止。
这就是在 Flutter 中使用 flare_loading
插件来展示加载动画的基本步骤和代码示例。希望这对你有所帮助!