Line data Source code
1 : import 'package:flutter/material.dart'; 2 : import 'package:pal/src/injectors/user_app/user_app_context.dart'; 3 : import 'package:pal/src/services/client/in_app_user/in_app_user_client_service.dart'; 4 : import 'package:pal/src/services/client/helper_client_service.dart'; 5 : import 'package:pal/src/services/client/page_client_service.dart'; 6 : import 'package:pal/src/in_app_user_manager.dart'; 7 : import 'package:pal/src/services/package_version.dart'; 8 : import 'package:pal/src/ui/client/helpers_synchronizer.dart'; 9 : 10 : import '../../pal_navigator_observer.dart'; 11 : 12 : class UserInjector extends InheritedWidget { 13 : 14 : final PageClientService _pageService; 15 : 16 : final HelperClientService _helperService; 17 : 18 : final InAppUserClientService _clientInAppUserService; 19 : 20 : final PackageVersionReader _packageVersionReader; 21 : 22 : final PalRouteObserver routeObserver; 23 : 24 : final HelpersSynchronizer _helperSynchronizeService; 25 : 26 2 : UserInjector({ 27 : Key key, 28 : @required UserAppContext appContext, 29 : @required this.routeObserver, 30 : @required Widget child, 31 0 : }) : assert(child != null && appContext != null), 32 4 : this._pageService = PageClientService.build(appContext.pageRepository), 33 2 : this._helperService = HelperClientService.build( 34 2 : clientSchemaRepository: appContext.localClientSchemaRepository, 35 2 : helperRemoteRepository: appContext.helperRepository, 36 2 : localVisitRepository: appContext.pageUserVisitLocalRepository, 37 2 : remoteVisitRepository: appContext.pageUserVisitRemoteRepository 38 : ), 39 2 : this._helperSynchronizeService = new HelpersSynchronizer( 40 2 : schemaLocalRepository: appContext.localClientSchemaRepository, 41 2 : schemaRemoteRepository: appContext.remoteClientSchemaRepository, 42 2 : pageUserVisitLocalRepository: appContext.pageUserVisitLocalRepository, 43 2 : pageUserVisitRemoteRepository: appContext.pageUserVisitRemoteRepository, 44 2 : packageVersionReader: PackageVersionReader(), 45 : ), 46 2 : this._packageVersionReader = PackageVersionReader(), 47 4 : this._clientInAppUserService = InAppUserClientService.build(appContext.inAppUserRepository), 48 2 : super(key: key, child: child) { 49 4 : setInAppUserManagerService(this.inAppUserClientService); 50 : } 51 : 52 2 : static UserInjector of(BuildContext context) => 53 2 : context.dependOnInheritedWidgetOfExactType<UserInjector>(); 54 : 55 0 : @override 56 : bool updateShouldNotify(UserInjector old) => true; 57 : 58 0 : PageClientService get pageService => this._pageService; 59 : 60 4 : HelperClientService get helperService => this._helperService; 61 : 62 0 : PackageVersionReader get packageVersionReader => this._packageVersionReader; 63 : 64 4 : InAppUserClientService get inAppUserClientService => this._clientInAppUserService; 65 : 66 4 : HelpersSynchronizer get helpersSynchronizerService => this._helperSynchronizeService; 67 : }