/// App 入口 /// /// 启动时完成: /// 1. 微信 SDK 注册(fluwx registerApi + addSubscriber) /// 2. Stripe 发布密钥初始化 /// 3. 国际化(中/英)、ScreenUtil 适配、EasyLoading 全局配置 library; import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'constants.dart'; import 'pages/home_page.dart'; import 'service/platform/stripe_flow.dart'; import 'service/platform/wechat_flow.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); // 微信 SDK:注册 AppID + 订阅支付结果回调(Web 端为空实现,安全失败) try { await WechatFlow.instance.init(); WechatFlow.instance.subscribe(); } catch (e) { // 微信 SDK 初始化失败不阻塞启动(Web / 未配置 AppID 场景) debugPrint('微信 SDK 初始化失败(忽略): $e'); } // Stripe:发布密钥初始化(真实密钥由后端 createStripePayment 下发) StripeFlow.instance.init(kStripePublishableKey); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { // ScreenUtil 设计稿尺寸(750 宽,对应常见移动端设计稿) return ScreenUtilInit( designSize: const Size(750, 1334), minTextAdapt: true, builder: (context, child) { return MaterialApp( title: 'flutter_paydemo', debugShowCheckedModeBanner: false, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo), useMaterial3: true, ), localizationsDelegates: const [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: const [ Locale('zh', 'CN'), Locale('en', 'US'), ], locale: const Locale('zh', 'CN'), home: child ?? const HomePage(), // EasyLoading 全局配置 builder: EasyLoading.init(), ); }, ); } }