Flutter应用加载覆盖层插件overlay_loader_with_app_icon的使用
Flutter应用加载覆盖层插件 overlay_loader_with_app_icon
的使用
overlay_loader_with_app_icon
是一个轻量级的Flutter包,它在发起异步调用时显示带有应用程序图标(app icon)的漂亮加载覆盖层。这个插件非常适合用于展示加载状态或处理用户交互期间的操作。
Demo App
Getting Started
添加依赖到 pubspec.yaml
首先,在你的 pubspec.yaml
文件中添加对 overlay_loader_with_app_icon
包的依赖:
dependencies:
...
overlay_loader_with_app_icon:
然后运行 flutter pub get
来安装该包。
导入库
在需要使用的Widget文件中导入该库:
import 'package:overlay_loader_with_app_icon/overlay_loader_with_app_icon.dart';
Usage 使用方法
要在一个异步调用过程中显示带有应用图标的进度指示器,只需将 OverlayLoaderWithAppIcon
包装在任何小部件周围,并通过 _loading
布尔变量来启用或禁用进度加载器。
下面是一个完整的示例代码,展示了如何集成和使用这个插件:
import 'package:flutter/material.dart';
import 'package:overlay_loader_with_app_icon/overlay_loader_with_app_icon.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.blue),
home: LoginPage(),
);
}
}
class LoginPage extends StatefulWidget {
const LoginPage({Key? key}) : super(key: key);
@override
State<LoginPage> createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TextEditingController emailController = TextEditingController();
TextEditingController password/XMLSchemaController = TextEditingController();
bool _isLoading = false;
void loadStateForSeconds() {
setState(() {
_isLoading = true; // 启动模态进度HUD
});
Future.delayed(Duration(seconds: 2), () {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text('Login successfully', style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold)),
Text('${emailController.text}', style: TextStyle(color: Colors.white)),
],
),
backgroundColor: Colors.blue,
));
setState(() {
_isLoading = false; // 关闭模态进度HUD
});
});
}
@override
Widget build(BuildContext context) {
return OverlayLoaderWithAppIcon(
isLoading: _isLoading,
overlayBackgroundColor: Colors.black,
circularProgressColor: Color(0xff670099),
appIcon: Image.asset('images/appIcon.png'),
child: Scaffold(
appBar: AppBar(title: Text("Overlay loader with app icon")),
body: Form(
key: _formKey,
autovalidateMode: AutovalidateMode.always,
child: Padding(
padding: EdgeInsets.all(8.0),
child: _buildColumn(),
),
),
),
);
}
Column _buildColumn() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextFormField(
controller: emailController,
textInputAction: TextInputAction.next,
decoration: InputDecoration(border: UnderlineInputBorder(), hintText: "Enter Email"),
),
SizedBox(height: 20),
TextFormField(
controller: passwordController,
obscureText: true,
decoration: InputDecoration(border: UnderlineInputBorder(), hintText: "Enter Password"),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
if (_formKey.currentState!.validate()) {
loadStateForSeconds();
}
},
child: Text("Login"))
],
);
}
}
More Options 更多选项
你可以根据需要自定义构造函数中的参数:
OverlayLoaderWithAppIcon({
required this.isLoading,
required this.child,
required this.appIcon,
this.appIconSize = 50,
this.borderRadius = 15,
this.overlayOpacity = 0.5,
this.circularProgressColor,
this.overlayBackgroundColor,
});
以上就是关于 overlay_loader_with_app_icon
插件的基本介绍和使用示例。希望这对你有所帮助!如果有更多功能需求,请考虑提交issue进行讨论。😊🙏🏻
更多关于Flutter应用加载覆盖层插件overlay_loader_with_app_icon的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter应用加载覆盖层插件overlay_loader_with_app_icon的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter应用中使用overlay_loader_with_app_icon
插件的示例代码。这个插件通常用于在应用加载时显示一个带有应用图标的覆盖层(Overlay Loader)。
首先,确保你已经在pubspec.yaml
文件中添加了该插件的依赖项:
dependencies:
flutter:
sdk: flutter
overlay_loader_with_app_icon: ^最新版本号 # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter应用中,你可以按照以下步骤使用OverlayLoaderWithAppIcon
。
-
导入插件:
在需要使用覆盖层的Dart文件中导入插件:
import 'package:overlay_loader_with_app_icon/overlay_loader_with_app_icon.dart';
-
初始化OverlayLoaderWithAppIcon:
通常在应用的根组件(如
MyApp
)中初始化OverlayLoaderWithAppIcon
。import 'package:flutter/material.dart'; import 'package:overlay_loader_with_app_icon/overlay_loader_with_app_icon.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return OverlayLoaderWithAppIcon( loaderColor: Colors.white.withOpacity(0.8), // 覆盖层背景颜色及透明度 loaderBackgroundColor: Colors.blue, // 加载指示器的背景颜色 loaderIcon: Image.asset('assets/app_icon.png'), // 应用图标 child: MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), ), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Overlay Loader Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You can show and hide the loader using OverlayLoaderWithAppIcon methods.', ), ElevatedButton( onPressed: () { OverlayLoaderWithAppIcon.showLoader(context); // Simulate a loading process with a delay Future.delayed(Duration(seconds: 2), () { OverlayLoaderWithAppIcon.hideLoader(context); }); }, child: Text('Show Loader'), ), ], ), ), ); } }
-
使用OverlayLoaderWithAppIcon的方法:
你可以通过
OverlayLoaderWithAppIcon.showLoader(context)
和OverlayLoaderWithAppIcon.hideLoader(context)
方法来显示和隐藏加载覆盖层。注意:确保
context
是OverlayLoaderWithAppIcon
组件的子树的上下文,否则可能会引发错误。 -
资产文件:
确保在
pubspec.yaml
中声明了应用图标资源,并将其放在assets
文件夹中:flutter: assets: - assets/app_icon.png
通过以上步骤,你应该能够在Flutter应用中成功使用overlay_loader_with_app_icon
插件来显示带有应用图标的加载覆盖层。