Flutter简易加载提示插件request_easy_loading的使用
Flutter简易加载提示插件request_easy_loading的使用
request_easy_loading
插件帮助你在向服务器发送请求时显示加载或进度对话框,并且不需要上下文即可执行此操作。
开始使用
request_easy_loading
包含创建导航键所需的最小实现,并将其传递给库。
如何使用
第一步
下载或克隆此仓库:
https://github.com/sepehr13494/request_easy_loading
第二步
进入项目根目录并在控制台中执行以下命令以获取所需的依赖项:
flutter pub get
请求简易加载功能
request_easy_loading
提供了以下功能:
showLoading
showProgressDialog
现在,让我们进入 lib 文件夹,该文件夹包含应用程序的主要代码。
主程序
创建一个导航键并将其传递给 request_easy_loading
的 setNavigatorKey
方法,这将管理所有上下文。同时,将导航键传递给你的 MaterialApp
组件。
这可以帮助你在应用程序的任何位置通过以下方式访问当前上下文:
BuildContext currentContext = navigatorKey.currentState!.context;
让我们回到我们的项目中:
final navigatorKey = GlobalKey<NavigatorState>(); // 添加此行
void main() {
WidgetsFlutterBinding.ensureInitialized(); // 添加此行
RequestEasyLoading().setNavigatorKey(navigatorKey); // 添加此行
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: navigatorKey, // 添加此行
home: HomePage(),
);
}
}
现在,你可以轻松地在应用程序的任何地方使用以下代码来显示加载对话框:
showLoading(){
RequestEasyLoading().showEasyLoading();
// 或者你可以传递自己的可选小部件(你的小部件必须包含 Dialog 小部件)
RequestEasyLoading().showEasyLoading(widget: myWidget);
}
或者取消加载:
cancelLoading(){
RequestEasyLoading().cancelEasyLoading();
}
对于需要上传文件并且需要显示进度对话的请求,可以简单地使用:
showProgressDialog(){
RequestEasyLoading().showProgressDialog(sent, total);
// 或者你可以传递自己的可选小部件(你的小部件必须包含 Dialog 小部件)
RequestEasyLoading().showProgressDialog(sent, total, widget: myWidget);
}
对于使用 dio
的情况,可以这样使用:
sendFileRequest(){
dio.post(
baseUrl,
data: body,
onSendProgress:(int sent,int total){
print("$sent , $total");
RequestEasyLoading().showProgressDialog(sent,total);
}
);
}
示例代码
以下是完整的示例代码:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:request_easy_loading/request_easy_loading.dart';
final navigatorKey = GlobalKey<NavigatorState>();
void main() {
WidgetsFlutterBinding.ensureInitialized();
RequestEasyLoading().setNavigatorKey(navigatorKey);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: navigatorKey,
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
Timer? timer;
int sent = 0;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Request Easy Loading"),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () {
RequestEasyLoading().showEasyLoading();
Future.delayed(Duration(seconds: 2), () {
RequestEasyLoading().cancelEasyLoading();
});
},
child: Text("显示加载"),
),
ElevatedButton(
onPressed: () {
Timer.periodic(Duration(seconds: 1), (timer) {
RequestEasyLoading().showProgressDialog(sent, 100);
if (sent == 100) {
timer.cancel();
sent = 0;
} else {
sent += 20;
}
});
},
child: Text("显示进度加载"),
),
]
.map((e) => Padding(
padding: EdgeInsets.symmetric(vertical: 16),
child: e,
))
.toList(),
),
),
);
}
[@override](/user/override)
void dispose() {
if (timer != null) {
timer!.cancel();
}
super.dispose();
}
}
更多关于Flutter简易加载提示插件request_easy_loading的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter简易加载提示插件request_easy_loading的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用request_easy_loading
插件的示例代码。这个插件提供了一个简易的加载提示功能,非常适合在网络请求或其他需要显示加载状态的地方使用。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加request_easy_loading
的依赖:
dependencies:
flutter:
sdk: flutter
request_easy_loading: ^3.0.0 # 请根据最新版本调整版本号
然后运行flutter pub get
来安装依赖。
2. 初始化插件
在你的main.dart
文件中,你需要初始化RequestEasyLoading
。通常,这会在MaterialApp
的builder
参数中进行,以便在整个应用中都可以使用加载提示。
import 'package:flutter/material.dart';
import 'package:request_easy_loading/request_easy_loading.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return EasyLoading(
// 初始化配置
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
),
dismissOnBackgroundTap: true, // 点击背景是否消失
indicatorType: EasyLoadingIndicatorType.fadingCircle, // 加载指示器类型
loadingStyle: EasyLoadingStyle.custom, // 加载样式
customProgressIndicator: CircularProgressIndicator(), // 自定义进度指示器
maskType: EasyLoadingMaskType.black, // 遮罩类型
photoSize: 50.0, // 加载指示器大小
radius: 10.0, // 圆角大小
backgroundColor: Colors.grey.withOpacity(0.7), // 背景颜色
indicatorColor: Colors.blue, // 指示器颜色
textColor: Colors.white, // 文本颜色
animationDuration: const Duration(milliseconds: 500), // 动画时长
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
// 显示加载提示
EasyLoading.show(status: 'Loading...');
// 模拟网络请求或其他耗时操作
await Future.delayed(Duration(seconds: 2));
// 隐藏加载提示
EasyLoading.dismiss();
},
child: Text('Show Loading'),
),
),
);
}
}
3. 使用插件
在上面的代码中,我们创建了一个简单的Flutter应用,并在点击按钮时显示加载提示。EasyLoading.show()
方法用于显示加载提示,而EasyLoading.dismiss()
方法用于隐藏加载提示。
你可以根据需要调整EasyLoading
的初始化参数,比如加载提示的文本、颜色、动画效果等。
4. 更多功能
request_easy_loading
插件还提供了更多的功能,比如:
EasyLoading.showSuccess(message);
显示成功提示EasyLoading.showError(message);
显示错误提示EasyLoading.showInfo(message);
显示信息提示
你可以根据需要调用这些方法来实现不同类型的提示。
这个示例代码展示了如何在Flutter项目中集成并使用request_easy_loading
插件来显示加载提示。希望这对你有所帮助!