Flutter加载覆盖层插件basic_loading_overlay的使用
Flutter加载覆盖层插件basic_loading_overlay的使用
本README描述了该包。如果您将此包发布到pub.dev,则此README的内容将出现在您的包的首页上。
有关编写良好包README的指南,请参阅编写包页面。
有关开发包的一般信息,请参阅Dart指南中的创建包和Flutter指南中的开发包和插件。
特性
创建一个新的作用域,在您通过编程将其弹出之前用户无法离开。
使用方法
import 'package:flutter/material.dart';
import 'package:basic_loading_overlay/basic_loading_overlay.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 此小部件是您的应用程序的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Basic Loading Overlay',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
super.key,
required this.title,
});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(10.0),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'每次您按下按钮时,加载覆盖层将在N秒后消失,其中N是您按下的次数。',
),
const SizedBox(
height: 15,
),
const Text(
'您已经按下了按钮这么多次:',
),
Text(
'$_counter',
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
),
),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _showOverlay,
tooltip: '增加',
child: const Icon(Icons.add),
),
);
}
Future<void> _showOverlay() async {
_incrementCounter();
Future.delayed(
Duration(seconds: _counter),
() => Navigator.of(context).pop(),
);
LoadingOverlay.show(
context: context,
);
}
}
额外信息
如果您喜欢这个包并发现它有用,请给它点赞。
示例代码
import 'package:flutter/material.dart';
import 'package:basic_loading_overlay/basic_loading_overlay.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 此小部件是您的应用程序的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Basic Loading Overlay',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
super.key,
required this.title,
});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Padding(
padding: const EdgeInsets.all(10.0),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'每次您按下按钮时,加载覆盖层将在N秒后消失,其中N是您按下的次数。',
),
const SizedBox(
height: 15,
),
const Text(
'您已经按下了按钮这么多次:',
),
Text(
'$_counter',
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.w600,
),
),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _showOverlay,
tooltip: '增加',
child: const Icon(Icons.add),
),
);
}
Future<void> _showOverlay() async {
_incrementCounter();
Future.delayed(
Duration(seconds: _counter),
() => Navigator.of(context).pop(),
);
LoadingOverlay.show(
context: context,
);
}
}
更多关于Flutter加载覆盖层插件basic_loading_overlay的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter加载覆盖层插件basic_loading_overlay的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
basic_loading_overlay
是一个用于在 Flutter 应用中显示加载覆盖层的插件。它可以帮助你在执行异步操作时显示一个加载指示器,以提升用户体验。以下是如何使用 basic_loading_overlay
插件的详细步骤。
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 basic_loading_overlay
插件的依赖:
dependencies:
flutter:
sdk: flutter
basic_loading_overlay: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 basic_loading_overlay
插件:
import 'package:basic_loading_overlay/basic_loading_overlay.dart';
3. 使用 BasicLoadingOverlay
BasicLoadingOverlay
是一个 Widget
,你可以将它包裹在你的界面组件中。当需要显示加载覆盖层时,调用 show
方法;当加载完成时,调用 hide
方法。
以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:basic_loading_overlay/basic_loading_overlay.dart';
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final BasicLoadingOverlay _loadingOverlay = BasicLoadingOverlay();
Future<void> _performSomeTask() async {
_loadingOverlay.show(context); // 显示加载覆盖层
// 模拟一个异步操作
await Future.delayed(Duration(seconds: 2));
_loadingOverlay.hide(); // 隐藏加载覆盖层
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Basic Loading Overlay Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _performSomeTask,
child: Text('Perform Task'),
),
),
);
}
}
4. 自定义加载指示器
BasicLoadingOverlay
允许你自定义加载指示器的外观。你可以通过传递 loadingWidget
参数来指定自定义的加载指示器。
_loadingOverlay.show(
context,
loadingWidget: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(Colors.red),
),
);
5. 其他选项
BasicLoadingOverlay
还提供了其他一些选项,例如:
barrierColor
: 设置覆盖层的背景颜色。barrierDismissible
: 设置是否可以通过点击覆盖层外部来隐藏覆盖层。
_loadingOverlay.show(
context,
barrierColor: Colors.black.withOpacity(0.5),
barrierDismissible: false,
);
6. 完整示例
以下是一个完整的示例,展示了如何使用 BasicLoadingOverlay
插件:
import 'package:flutter/material.dart';
import 'package:basic_loading_overlay/basic_loading_overlay.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Basic Loading Overlay Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final BasicLoadingOverlay _loadingOverlay = BasicLoadingOverlay();
Future<void> _performSomeTask() async {
_loadingOverlay.show(context);
// 模拟一个异步操作
await Future.delayed(Duration(seconds: 2));
_loadingOverlay.hide();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Basic Loading Overlay Example'),
),
body: Center(
child: ElevatedButton(
onPressed: _performSomeTask,
child: Text('Perform Task'),
),
),
);
}
}