| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import 'package:flutter/material.dart';
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import 'package:flutter_screenutil/flutter_screenutil.dart';
- import 'core/l10n/app_localizations.dart';
- import 'core/router/app_router.dart';
- import 'core/theme/app_theme.dart';
- import 'providers/app_provider.dart';
- import 'providers/coin_cache_provider.dart';
- import 'providers/currency_provider.dart';
- import 'providers/market_provider.dart';
- class CexApp extends ConsumerWidget {
- const CexApp({super.key});
- @override
- Widget build(BuildContext context, WidgetRef ref) {
- final themeMode = ref.watch(themeProvider);
- final locale = ref.watch(localeProvider);
- // 初始化法币汇率,确保全局 formatFiatPrice 使用正确汇率
- ref.watch(currencyProvider);
- // 提前初始化行情数据,减少进入行情页面时的加载等待
- ref.read(coinCacheProvider);
- ref.read(marketProvider);
- final router = ref.watch(appRouterProvider);
- // ScreenUtil 基于 375px 设计稿宽度
- return ScreenUtilInit(
- designSize: const Size(375, 812),
- minTextAdapt: true,
- splitScreenMode: true,
- builder: (context, child) {
- return MediaQuery(
- // 锁定字体缩放为 1.0,不跟随系统字体大小变化
- // 避免行情数字/布局在用户调大系统字体时溢出或截断
- data: MediaQuery.of(context).copyWith(
- textScaler: TextScaler.noScaling,
- ),
- child: MaterialApp.router(
- title: 'iBit',
- debugShowCheckedModeBanner: false,
- theme: AppTheme.light,
- darkTheme: AppTheme.dark,
- themeMode: themeMode,
- locale: locale,
- supportedLocales: const [
- Locale('zh'),
- Locale('zh', 'TW'),
- Locale('en'),
- Locale('hi'),
- Locale('id'),
- Locale('ja'),
- Locale('ko'),
- ],
- localizationsDelegates: AppLocalizations.localizationsDelegates,
- routerConfig: router,
- ),
- );
- },
- );
- }
- }
|