import 'package:flutter/cupertino.dart' show CupertinoPageTransitionsBuilder; import 'package:flutter/foundation.dart' show LicenseEntryWithLineBreaks, LicenseRegistry; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show rootBundle; import 'app_info.dart'; import 'app_shell.dart'; void main() { _registerAppLicense(); runApp(const KiriMemoApp()); } /// 把 LICENSE(AGPL-3.0)注册进 Flutter 的许可清单, /// 这样「关于 → 开源许可」里会和应用依赖的许可显示在一起。 void _registerAppLicense() { LicenseRegistry.addLicense(() async* { final String text = await rootBundle.loadString('LICENSE'); yield LicenseEntryWithLineBreaks([appName], text); }); } class KiriMemoApp extends StatelessWidget { const KiriMemoApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: appName, debugShowCheckedModeBanner: false, theme: _theme(Brightness.light), darkTheme: _theme(Brightness.dark), home: const AppShell(), ); } static ThemeData _theme(Brightness brightness) { return ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: const Color(0xFF4C6EF5), brightness: brightness, ), // Flutter 3.47 起 Android 默认用 PredictiveBackPageTransitionsBuilder, // 配合 targetSdk 36(Android 15+ 默认开启预测式返回)会在单路由外壳里 // 出现"预览走完直接退应用"的割裂感。这里显式换成无预测的 M3 水平 // 滑入转场(FadeForwards),同时 AndroidManifest 里关掉了 // enableOnBackInvokedCallback。 pageTransitionsTheme: const PageTransitionsTheme( builders: { TargetPlatform.android: FadeForwardsPageTransitionsBuilder(), TargetPlatform.iOS: CupertinoPageTransitionsBuilder(), TargetPlatform.macOS: CupertinoPageTransitionsBuilder(), TargetPlatform.linux: FadeForwardsPageTransitionsBuilder(), TargetPlatform.windows: FadeForwardsPageTransitionsBuilder(), }, ), ); } }