Flutter等待提示插件waiting的使用
Flutter等待提示插件waiting的使用
引言
等待是任何应用程序的一部分:加载资源需要时间,用户需要知道他们必须等待。
此包提供了一个 WaitingWidget
:一个显示进度指示器的小部件,包括动画、过渡和自定义选项。
开始使用
在你的 Flutter 项目中添加依赖项:
dependencies:
waiting: ^1.0.0
导入该包:
import 'package:waiting/waiting.dart';
将任意小部件包装在 WaitingWidget
中:
WaitingWidget(
show: _show,
child: const Center(
child: SizedBox(width: 200, height: 200, child: FlutterLogo())),
);
如果给定变量 _show
被设置为 true
,则被包装的小部件会被淡出并覆盖上一个圆形进度指示器。当 _show
变为 false
时,被包装的小部件会恢复到正常状态:
请参阅 示例代码 获取完整的代码。
自定义
设置指示器
要更改指示器,在创建 WaitingWidget
时设置 indicator
。
例如,如果希望使用 Lottie 动画作为指示器:
WaitingWidget(
indicator: Center(
child: SizedBox(
width: 100,
height: 100,
child: Center(
child: Lottie.asset("assets/infinite.json")))),
show: _show,
child: const Center(
child: SizedBox(width: 200, height: 200, child: FlutterLogo())),
);
结果如下所示:
设置超时
在等待一段时间后,用户应该被告知等待的时间将超过预期。
WaitingWidget
提供了 timeout
参数来指定超时时间,超过该时间后用户将收到通知:
WaitingWidget(
show: _show,
timeout: const Duration(seconds: 5), // 设置超时时间为5秒
child: const Center(
child: SizedBox(width: 200, height: 200, child: FlutterLogo())),
);
结果如下所示:
若要指定自己的超时指示器,可以使用 timeoutIndicator
参数:
WaitingWidget(
show: _show,
timeout: const Duration(seconds: 5),
timeoutIndicator: const Center(child: Text("请稍等...")), // 自定义超时指示器
child: const Center(
child: SizedBox(width: 200, height: 200, child: FlutterLogo())),
);
结果如下所示:
进一步探索
WaitingWidget
使用 SceneController
和内部实现 SceneWidget
来在不同的场景之间进行过渡。
查看 waiting.dart 了解具体实现,并获得灵感。
还可以查看 演示源码 以了解如何使用“场景”构建演示等。
完整示例代码
以下是一个完整的示例代码,展示了如何使用 WaitingWidget
:
import 'package:flutter/material.dart';
import 'package:waiting/waiting.dart';
void main() {
runApp(const ExampleApp());
}
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '等待示例',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
useMaterial3: true),
home: Example(),
);
}
}
class Example extends StatefulWidget {
const Example({super.key});
[@override](/user/override)
State<StatefulWidget> createState() => ExampleState();
}
class ExampleState extends State<Example> {
bool _show = false;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: WaitingWidget(
show: _show,
child: const Center(
child: SizedBox(width: 200, height: 200, child: FlutterLogo()))),
floatingActionButton: FloatingActionButton(
onPressed: _toggle,
child: !_show ? const Icon(Icons.play_arrow) : const Icon(Icons.pause),
),
);
}
void _toggle() {
setState(() {
_show = !_show;
});
}
}
更多关于Flutter等待提示插件waiting的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter等待提示插件waiting的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用waiting
插件(通常指的是flutter_spinkit
或类似的加载指示器库,因为没有一个广泛认可的名为waiting
的官方插件)的代码示例。这里,我将使用flutter_spinkit
作为等待提示插件的示例,因为它是一个非常流行的选择。
首先,你需要在pubspec.yaml
文件中添加flutter_spinkit
依赖:
dependencies:
flutter:
sdk: flutter
flutter_spinkit: ^5.1.0 # 请检查最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中使用SpinKit
系列的小部件来显示加载提示。以下是一个简单的示例,展示如何在点击按钮时显示加载提示,并在模拟的异步操作完成后隐藏它:
import 'package:flutter/material.dart';
import 'package:flutter_spinkit/flutter_spinkit.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(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool isLoading = false;
void _performAsyncOperation() async {
setState(() {
isLoading = true;
});
// 模拟异步操作,例如网络请求或数据处理
await Future.delayed(Duration(seconds: 3));
setState(() {
isLoading = false;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Waiting Indicator Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
_performAsyncOperation();
},
child: Text('Start Loading'),
),
if (isLoading)
SpinKitFadingCircle(
color: Colors.blue,
size: 50.0,
),
],
),
),
);
}
}
在这个示例中:
- 我们导入了
flutter_spinkit
包。 - 在
_MyHomePageState
类中,我们定义了一个isLoading
布尔变量来跟踪加载状态。 _performAsyncOperation
方法模拟了一个异步操作,使用Future.delayed
来模拟耗时任务。在任务开始前,我们将isLoading
设置为true
,任务完成后设置为false
。- 在
build
方法中,我们根据isLoading
的状态决定是否显示SpinKitFadingCircle
加载指示器。
你可以根据需要选择flutter_spinkit
提供的不同加载动画,例如SpinKitDoubleBounce
、SpinKitThreeBounce
等,只需替换SpinKitFadingCircle
即可。
希望这个示例能帮助你理解如何在Flutter中使用等待提示插件!