Skip to main content

ecp_global 2.1.0 copy "ecp_global: ^2.1.0" to clipboard
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(),
    );
  }
}