ecp_global 2.1.0
ecp_global: ^2.1.0 copied to clipboard
翼协云全局信息管理
example/lib/main.dart
import 'package:dio/dio.dart';
import 'package:ecp_global/ecp_global.dart';
import 'package:ecp_net/net.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'login_page.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
_initNet();
runApp(const MyApp());
}
/// 初始化网络请求(ecp_net · NetConfig)
///
/// ecp_global 的所有接口(EcpGlobalApi)都基于 ecp_net 的全局 [NetConfig] 发起,
/// 启动时统一设置服务器地址与超时时间。
///
/// 服务器地址可选:
/// - [BaseUrl.dev] 公共开发测试服务器
/// - [BaseUrl.test] 公共测试运维服务器
void _initNet() {
NetConfig.instance.baseOptions = BaseOptions(
baseUrl: BaseUrl.dev,
connectTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 15),
);
NetConfig.instance.dynamicHeader = (options, header) async {
header["Device-Type"] = "mobile";
header["XT-token"] = RuntimeUtils.currentUser?.token;
header["Current-Dept"] = RuntimeUtils.currentDepartment?.id;
header["Tenant-Id"] = RuntimeUtils.currentUser?.tenantId;
};
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: '翼协云全局示例',
// G.navigatorKey:全局导航 key
// 业务代码任何位置可通过 G.getCurrentContext() / G.getCurrentState() 拿到上下文做导航
navigatorKey: G.navigatorKey,
theme: ThemeData(colorSchemeSeed: Colors.blue, useMaterial3: true),
home: const LoginPage(),
// SmartDialog 全局初始化(网络请求 loading / toast 依赖)
builder: FlutterSmartDialog.init(),
);
}
}