Flutter加载状态显示插件flutter_loading的使用
Flutter加载状态显示插件flutter_loading的使用
您可以使用Future
轻松配置加载屏幕。
开始使用
- 使用
mixin LoadingStateMixin
- 配置
buildLoadingContainer
- 调用
loading(future)
示例代码
以下是一个完整的示例,展示如何在Flutter应用中使用flutter_loading
插件来显示加载状态。
import 'package:flutter/material.dart';
import 'package:flutter_loading/flutter_loading.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// 这是应用程序的根部件。
@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, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with LoadingStateMixin {
int _counter = 0;
void _incrementCounter() async {
// 调用 loading 方法并传入异步任务
int tick = await loading(_action());
setState(() {
_counter += tick;
});
}
// 模拟一个耗时操作
Future<int> _action() async {
await Future.delayed(Duration(milliseconds: 1000)); // 模拟1秒延迟
return 1;
}
@override
Widget build(BuildContext context) {
// 构建带有加载状态的容器
return buildLoadingContainer(
child: Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'你已经按下了按钮多少次:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: '增加',
child: Icon(Icons.add),
),
),
);
}
}
代码解释
-
引入依赖:
import 'package:flutter_loading/flutter_loading.dart';
引入
flutter_loading
插件。 -
使用
LoadingStateMixin
:class _MyHomePageState extends State<MyHomePage> with LoadingStateMixin
使用
LoadingStateMixin
以支持加载状态管理。 -
定义异步任务:
Future<int> _action() async { await Future.delayed(Duration(milliseconds: 1000)); return 1; }
定义一个模拟的异步任务,这里使用
Future.delayed
模拟耗时操作。 -
调用
loading
方法:int tick = await loading(_action());
调用
loading
方法并传入异步任务,它会在任务执行期间显示加载动画。 -
构建带有加载状态的容器:
return buildLoadingContainer( child: Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('你已经按下了按钮多少次:'), Text('$_counter', style: Theme.of(context).textTheme.display1), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: '增加', child: Icon(Icons.add), ), ), );
更多关于Flutter加载状态显示插件flutter_loading的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加载状态显示插件flutter_loading的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_loading
是一个用于在 Flutter 应用中显示加载状态的插件。它可以帮助你在异步操作(如网络请求、数据库查询等)期间显示加载指示器,以改善用户体验。以下是使用 flutter_loading
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_loading
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_loading: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入包
在你的 Dart 文件中导入 flutter_loading
包:
import 'package:flutter_loading/flutter_loading.dart';
3. 使用 FlutterLoading
FlutterLoading
提供了多种方法来显示和隐藏加载指示器。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:flutter_loading/flutter_loading.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool _isLoading = false;
Future<void> _simulateLoading() async {
setState(() {
_isLoading = true;
});
// 模拟一个异步操作
await Future.delayed(Duration(seconds: 2));
setState(() {
_isLoading = false;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Loading Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _isLoading ? null : _simulateLoading,
child: Text('Start Loading'),
),
SizedBox(height: 20),
if (_isLoading) FlutterLoading(),
],
),
),
);
}
}
4. 自定义加载指示器
FlutterLoading
允许你自定义加载指示器的外观。你可以通过传递 loadingWidget
参数来指定自定义的加载 widget:
FlutterLoading(
loadingWidget: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
),
)
5. 显示和隐藏加载指示器
你可以在异步操作开始和结束时手动显示和隐藏加载指示器:
FlutterLoading.show(context); // 显示加载指示器
// 执行异步操作
await Future.delayed(Duration(seconds: 2));
FlutterLoading.hide(); // 隐藏加载指示器
6. 完整示例
以下是一个完整的示例,展示了如何使用 FlutterLoading
来显示和隐藏加载指示器:
import 'package:flutter/material.dart';
import 'package:flutter_loading/flutter_loading.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Loading Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool _isLoading = false;
Future<void> _simulateLoading() async {
setState(() {
_isLoading = true;
});
// 显示加载指示器
FlutterLoading.show(context);
// 模拟一个异步操作
await Future.delayed(Duration(seconds: 2));
// 隐藏加载指示器
FlutterLoading.hide();
setState(() {
_isLoading = false;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Loading Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: _isLoading ? null : _simulateLoading,
child: Text('Start Loading'),
),
],
),
),
);
}
}