This commit is contained in:
stonega 2020-10-28 20:08:45 +08:00
parent 42c93a6404
commit aa3bbb2b4b
1 changed files with 97 additions and 96 deletions

View File

@ -1,96 +1,97 @@
import 'package:feature_discovery/feature_discovery.dart'; import 'package:feature_discovery/feature_discovery.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_downloader/flutter_downloader.dart'; import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'generated/l10n.dart'; import 'generated/l10n.dart';
import 'home/home.dart'; import 'home/home.dart';
import 'intro_slider/app_intro.dart'; import 'intro_slider/app_intro.dart';
import 'state/audio_state.dart'; import 'state/audio_state.dart';
import 'state/download_state.dart'; import 'state/download_state.dart';
import 'state/podcast_group.dart'; import 'state/podcast_group.dart';
import 'state/refresh_podcast.dart'; import 'state/refresh_podcast.dart';
import 'state/search_state.dart'; import 'state/search_state.dart';
import 'state/setting_state.dart'; import 'state/setting_state.dart';
final SettingState themeSetting = SettingState(); final SettingState themeSetting = SettingState();
Future main() async { Future main() async {
timeDilation = 1.0; timeDilation = 1.0;
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await themeSetting.initData(); await themeSetting.initData();
await FlutterDownloader.initialize(); await FlutterDownloader.initialize();
runApp( runApp(
MultiProvider( MultiProvider(
providers: [ providers: [
ChangeNotifierProvider( ChangeNotifierProvider(
create: (_) => themeSetting, create: (_) => themeSetting,
), ),
ChangeNotifierProvider(create: (_) => AudioPlayerNotifier()), ChangeNotifierProvider(create: (_) => AudioPlayerNotifier()),
ChangeNotifierProvider(create: (_) => GroupList()), ChangeNotifierProvider(create: (_) => GroupList()),
ChangeNotifierProvider(create: (_) => RefreshWorker()), ChangeNotifierProvider(create: (_) => RefreshWorker()),
ChangeNotifierProvider(create: (_) => SearchState()), ChangeNotifierProvider(create: (_) => SearchState()),
ChangeNotifierProvider(
lazy: false, ChangeNotifierProvider(
create: (_) => DownloadState(), lazy: false,
) create: (_) => DownloadState(),
], )
child: MyApp(), ],
), child: MyApp(),
); ),
var systemUiOverlayStyle = SystemUiOverlayStyle( );
statusBarColor: Colors.transparent, var systemUiOverlayStyle = SystemUiOverlayStyle(
systemNavigationBarColor: Colors.transparent); statusBarColor: Colors.transparent,
SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle); systemNavigationBarColor: Colors.transparent);
await SystemChrome.setPreferredOrientations( SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
[DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); await SystemChrome.setPreferredOrientations(
} [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);
}
class MyApp extends StatelessWidget {
@override class MyApp extends StatelessWidget {
Widget build(BuildContext context) { @override
return Consumer<SettingState>( Widget build(BuildContext context) {
builder: (_, setting, __) { return Consumer<SettingState>(
return FeatureDiscovery( builder: (_, setting, __) {
child: MaterialApp( return FeatureDiscovery(
themeMode: setting.theme, child: MaterialApp(
debugShowCheckedModeBanner: false, themeMode: setting.theme,
title: 'Tsacdop', debugShowCheckedModeBanner: false,
theme: lightTheme.copyWith( title: 'Tsacdop',
accentColor: setting.accentSetColor, theme: lightTheme.copyWith(
cursorColor: setting.accentSetColor, accentColor: setting.accentSetColor,
textSelectionHandleColor: setting.accentSetColor, cursorColor: setting.accentSetColor,
toggleableActiveColor: setting.accentSetColor, textSelectionHandleColor: setting.accentSetColor,
buttonTheme: ButtonThemeData( toggleableActiveColor: setting.accentSetColor,
hoverColor: setting.accentSetColor.withAlpha(70), buttonTheme: ButtonThemeData(
splashColor: setting.accentSetColor.withAlpha(70))), hoverColor: setting.accentSetColor.withAlpha(70),
darkTheme: ThemeData.dark().copyWith( splashColor: setting.accentSetColor.withAlpha(70))),
accentColor: setting.accentSetColor, darkTheme: ThemeData.dark().copyWith(
primaryColorDark: Colors.grey[800], accentColor: setting.accentSetColor,
scaffoldBackgroundColor: primaryColorDark: Colors.grey[800],
setting.realDark ? Colors.black87 : Color(0XFF212121), scaffoldBackgroundColor:
primaryColor: setting.realDark ? Colors.black87 : Color(0XFF212121),
setting.realDark ? Colors.black : Color(0XFF1B1B1B), primaryColor:
popupMenuTheme: PopupMenuThemeData().copyWith( setting.realDark ? Colors.black : Color(0XFF1B1B1B),
color: setting.realDark ? Colors.grey[900] : null), popupMenuTheme: PopupMenuThemeData().copyWith(
appBarTheme: AppBarTheme(elevation: 0), color: setting.realDark ? Colors.grey[900] : null),
buttonTheme: ButtonThemeData(height: 32), appBarTheme: AppBarTheme(elevation: 0),
dialogBackgroundColor: buttonTheme: ButtonThemeData(height: 32),
setting.realDark ? Colors.grey[900] : null, dialogBackgroundColor:
cursorColor: setting.accentSetColor), setting.realDark ? Colors.grey[900] : null,
localizationsDelegates: [ cursorColor: setting.accentSetColor),
S.delegate, localizationsDelegates: [
GlobalMaterialLocalizations.delegate, S.delegate,
GlobalWidgetsLocalizations.delegate, GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate,
], GlobalCupertinoLocalizations.delegate,
supportedLocales: S.delegate.supportedLocales, ],
home: setting.showIntro ? SlideIntro(goto: Goto.home) : Home(), supportedLocales: S.delegate.supportedLocales,
), home: setting.showIntro ? SlideIntro(goto: Goto.home) : Home(),
); ),
}, );
); },
} );
} }
}