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中使用等待提示插件!

