Flutter加载提示对话框插件loading_alert_dialog的使用
Flutter加载提示对话框插件loading_alert_dialog的使用
loading_alert_dialog
是一个可定制的 AlertDialog
,它允许在阻塞应用程序时运行计算,类似于使用 showDialog
或 showCupertinoDialog
,但不需要使用 Stack
或 Overlay
小部件。
开始使用
此包通过一个类 LoadingAlertDialog
暴露静态方法,这些方法包括:
-
showLoadingAlertDialog
这个主要的方法作为showDialog
/showCupertinoDialog
的包装器,通过Future
控制,该Future
通过computation
参数提供。当提供的Future
完成(无论是成功还是失败)时,对话框将自动关闭,并且方法调用本身会返回Future
的结果或抛出异常。 -
setDefaultWidgetBuilder
通过在这里设置WidgetBuilder
,每次调用showLoadingAlertDialog
都不需要提供builder
参数。
如何使用示例
import 'package:loading_alert_dialog/loading_alert_dialog.dart';
LoadingAlertDialog.showLoadingAlertDialog<int>(
context: context,
builder: (context,) => Card(
child: Padding(
padding: const EdgeInsets.all(24.0,),
child: Column(
children: <Widget>[
CircularProgressIndicator(),
Text("请等待..."),
],
mainAxisSize: MainAxisSize.min,
),
),
color: Colors.white,
),
computation: Future.delayed(
Duration(seconds: 3,), () {
final randomNumber = Random().nextInt(300);
return randomNumber;
},
),
).then((number) {
if (number != null) {
setState(() {
_randomNumber = number;
});
}
});
上面的示例代码展示了如何创建一个简单的卡片,其中包含一个文本和一个 CircularProgressIndicator
,持续3秒钟后弹出一个随机数,然后关闭对话框,并将弹出的数字显示到视图中。
完整示例代码
import 'dart:math';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:loading_alert_dialog/loading_alert_dialog.dart';
void main() {
runApp(
LoadingAlertDialogExampleApp(),
);
}
class LoadingAlertDialogExampleApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
color: Colors.blue,
home: LoadingAlertDialogExample(),
);
}
}
class LoadingAlertDialogExample extends StatefulWidget {
[@override](/user/override)
_LoadingAlertDialogExampleState createState() => _LoadingAlertDialogExampleState();
}
class _LoadingAlertDialogExampleState extends State<LoadingAlertDialogExample> {
int _randomNumber = 0;
void _showAlert() {
LoadingAlertDialog.showLoadingAlertDialog<int>(
context: context,
builder: (context,) => Card(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
children: <Widget>[
CircularProgressIndicator(),
Text("请等待..."),
],
mainAxisSize: MainAxisSize.min,
),
),
color: Colors.white,
),
computation: Future.delayed(
Duration(seconds: 3,), () {
final randomNumber = Random().nextInt(100);
return randomNumber;
},
),
).then((number) {
if (number != null) {
setState(() {
_randomNumber = number;
});
}
},);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("加载提示对话框示例"),
),
body: Center(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
children: <Widget>[
Text("随机数: $_randomNumber"),
ElevatedButton(
child: Text("显示对话框"),
onPressed: _showAlert,
),
],
mainAxisSize: MainAxisSize.min,
),
),
),
);
}
}
更多关于Flutter加载提示对话框插件loading_alert_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加载提示对话框插件loading_alert_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用loading_alert_dialog
插件来显示加载提示对话框的示例代码。这个插件允许你轻松地显示一个带有加载指示器的对话框,从而提升用户体验。
首先,你需要在pubspec.yaml
文件中添加loading_alert_dialog
依赖:
dependencies:
flutter:
sdk: flutter
loading_alert_dialog: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Dart文件中,你可以按照以下方式使用loading_alert_dialog
:
import 'package:flutter/material.dart';
import 'package:loading_alert_dialog/loading_alert_dialog.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> {
final LoadingAlertDialog _loadingDialog = LoadingAlertDialog();
void _showLoadingDialog() {
showDialog(
context: context,
barrierDismissible: false, // 设置为false使用户不能通过点击背景关闭对话框
builder: (BuildContext context) {
return _loadingDialog.create(
context,
title: '加载中...',
message: '请稍候...',
barrierColor: Colors.black.withOpacity(0.5), // 背景遮罩层的颜色
progressIndicator: CircularProgressIndicator(), // 自定义的进度指示器
);
},
);
}
void _dismissLoadingDialog() {
_loadingDialog.dismiss(context);
}
Future<void> _simulateLongRunningTask() async {
_showLoadingDialog();
await Future.delayed(Duration(seconds: 3)); // 模拟一个耗时操作
_dismissLoadingDialog();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Loading AlertDialog Demo'),
),
body: Center(
child: ElevatedButton(
onPressed: _simulateLongRunningTask,
child: Text('开始加载'),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,会显示一个加载提示对话框,模拟一个耗时操作(使用Future.delayed
),操作完成后关闭对话框。
代码解释:
- 依赖导入:首先,我们导入了
flutter/material.dart
和loading_alert_dialog
包。 - 创建
LoadingAlertDialog
实例:在_MyHomePageState
类中,我们创建了一个LoadingAlertDialog
的实例。 - 显示对话框:
_showLoadingDialog
方法使用showDialog
函数显示加载对话框。这里,我们传递了对话框的标题、消息、背景遮罩层的颜色和自定义的进度指示器。 - 关闭对话框:
_dismissLoadingDialog
方法用于关闭加载对话框。 - 模拟耗时操作:
_simulateLongRunningTask
方法模拟了一个耗时操作,首先显示加载对话框,然后等待3秒,最后关闭对话框。 - UI布局:在
build
方法中,我们创建了一个简单的UI,包含一个按钮,当用户点击按钮时,调用_simulateLongRunningTask
方法。
这个示例展示了如何在Flutter应用中使用loading_alert_dialog
插件来显示和隐藏加载提示对话框。你可以根据需要自定义对话框的样式和行为。