app.dart 1.68 KB
import 'dart:io';

import 'package:appframe/l10n/gen/app_localizations.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'config/routes.dart';

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    final Widget app = Platform.isIOS
        ? CupertinoApp.router(
            routerConfig: router,
            title: '班小二',
            theme: const CupertinoThemeData(primaryColor: CupertinoColors.systemBlue),
            localizationsDelegates: AppLocalizations.localizationsDelegates,
            supportedLocales: AppLocalizations.supportedLocales,
          )
        : MaterialApp.router(
            routerConfig: router,
            title: '班小二',
            theme: ThemeData(primarySwatch: Colors.blue),
            supportedLocales: AppLocalizations.supportedLocales,
            localizationsDelegates: AppLocalizations.localizationsDelegates,
          );

    // 全局默认状态栏样式兑底:透明背景 + 深色图标。
    // 作为最外层 AnnotatedRegion 只挂载一次,不会随页面状态变化反复
    // 下发命令,避免污染 Android decorView 上 H5 <video> 全屏依赖的
    // systemUiVisibility flag。带 AppBar 的页面由 AppBar.systemOverlayStyle
    // 在其 region 区域局部覆盖,隐藏 AppBar 后自动回到本全局值。
    return AnnotatedRegion<SystemUiOverlayStyle>(
      value: const SystemUiOverlayStyle(
        statusBarColor: Colors.transparent,
        statusBarIconBrightness: Brightness.dark,
        statusBarBrightness: Brightness.light,
      ),
      child: app,
    );
  }
}