84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| // Copyright (C) 2022 WYATT GROUP
 | |
| // Please see the AUTHORS file for details.
 | |
| //
 | |
| // This program is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // any later version.
 | |
| //
 | |
| // This program is distributed in the hope that it will be useful,
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| // GNU General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License
 | |
| // along with this program. If not, see <https://www.gnu.org/licenses/>.
 | |
| 
 | |
| import 'dart:async';
 | |
| 
 | |
| import 'package:example_router/core/dependency_injection/get_it.dart';
 | |
| import 'package:example_router/core/utils/app_bloc_observer.dart';
 | |
| import 'package:example_router/firebase_options.dart';
 | |
| import 'package:firebase_core/firebase_core.dart';
 | |
| import 'package:flutter/widgets.dart';
 | |
| import 'package:flutter_bloc/flutter_bloc.dart';
 | |
| 
 | |
| class MockSettings {
 | |
|   static MockSettings? _instance;
 | |
| 
 | |
|   /// Data source mode
 | |
|   late bool enable = false;
 | |
| 
 | |
|   MockSettings._(this.enable);
 | |
| 
 | |
|   factory MockSettings.enable() {
 | |
|     _instance ??= MockSettings._(true);
 | |
|     if (_instance!.enable != true) {
 | |
|       throw Exception('Mock already initialized in: ${_instance!.enable}');
 | |
|     }
 | |
|     return _instance!;
 | |
|   }
 | |
| 
 | |
|   factory MockSettings.disable() {
 | |
|     _instance ??= MockSettings._(false);
 | |
|     if (_instance!.enable != false) {
 | |
|       throw Exception('Mock already initialized in: ${_instance!.enable}');
 | |
|     }
 | |
|     return _instance!;
 | |
|   }
 | |
| 
 | |
|   static bool isEnable() {
 | |
|     if (_instance == null) {
 | |
|       throw Exception('MockSettings not initialized!');
 | |
|     }
 | |
|     return _instance!.enable == true;
 | |
|   }
 | |
| 
 | |
|   static bool isDisable() {
 | |
|     return !isEnable();
 | |
|   }
 | |
| }
 | |
| 
 | |
| Future<void> bootstrap(FutureOr<Widget> Function() builder) async {
 | |
|   await runZonedGuarded(
 | |
|     () async {
 | |
|       WidgetsFlutterBinding.ensureInitialized();
 | |
|       Bloc.observer = AppBlocObserver();
 | |
| 
 | |
|       FlutterError.onError = (details) {
 | |
|         debugPrint(details.toString());
 | |
|       };
 | |
| 
 | |
|       if (MockSettings.isDisable()) {
 | |
|         await Firebase.initializeApp(
 | |
|           options: DefaultFirebaseOptions.currentPlatform,
 | |
|         );
 | |
|       }
 | |
|       await GetItInitializer.init();
 | |
| 
 | |
|       runApp(await builder());
 | |
|     },
 | |
|     (error, stackTrace) => debugPrint(error.toString()),
 | |
|   );
 | |
| }
 |