fix: bloc provider in homePage
This commit is contained in:
parent
eb093299d2
commit
b8c2aab73c
|
@ -21,41 +21,31 @@ class HomePageWidget extends StatefulWidget {
|
|||
class _HomePageWidgetState extends State<HomePageWidget> {
|
||||
final scaffoldKey = GlobalKey<ScaffoldState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
await LocalsRepositoryImpl().update(context);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider(
|
||||
create: (context) => MenuBloc(
|
||||
style: MenuView.list_grid,
|
||||
item: EnumMenuItem.button,
|
||||
entries: MenuEntry.getEntriesByType(MenuEntryType.Home),
|
||||
)..add(MenuEvent()),
|
||||
),
|
||||
BlocProvider<HomeBloc>(
|
||||
create: (context) => HomeBloc()..add(HomeEvent()),
|
||||
),
|
||||
BlocProvider(
|
||||
create: (context) => LocalProfileBloc()..add(LocalProfileEvent()),
|
||||
),
|
||||
|
||||
],
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
LocalsRepositoryImpl.license.add(true);
|
||||
// context.read<LocalProfileBloc>().updateProfile(context);
|
||||
return Scaffold(
|
||||
key: scaffoldKey,
|
||||
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||
drawerEnableOpenDragGesture: true,
|
||||
drawerDragStartBehavior: DragStartBehavior.start,
|
||||
drawer: CustomDrawer(),
|
||||
appBar: buildAppBar(context),
|
||||
body: buildPage(context),
|
||||
);
|
||||
},
|
||||
),
|
||||
return Builder(
|
||||
builder: (context) {
|
||||
LocalsRepositoryImpl.license.add(true);
|
||||
// context.read<LocalProfileBloc>().updateProfile(context);
|
||||
return Scaffold(
|
||||
key: scaffoldKey,
|
||||
backgroundColor: FlutterFlowTheme.of(context).primaryBackground,
|
||||
drawerEnableOpenDragGesture: true,
|
||||
drawerDragStartBehavior: DragStartBehavior.start,
|
||||
drawer: CustomDrawer(),
|
||||
appBar: buildAppBar(context),
|
||||
body: buildPage(context),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import 'dart:io';
|
|||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:hub/backend/notifications/notification_service.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||
|
@ -19,7 +20,9 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|||
import 'package:hub/shared/extensions/string_extensions.dart';
|
||||
|
||||
import 'backend/notifications/firebase_messaging_service.dart';
|
||||
import 'features/home/index.dart';
|
||||
import 'initialization.dart';
|
||||
import 'shared/components/molecules/menu/index.dart';
|
||||
import 'shared/components/molecules/modules/index.dart';
|
||||
|
||||
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
||||
|
@ -189,24 +192,43 @@ class _AppState extends State<App> with WidgetsBindingObserver {
|
|||
@override
|
||||
void didChangeAppLifecycleState(AppLifecycleState state) async {
|
||||
if (state == AppLifecycleState.detached) {
|
||||
await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(false);
|
||||
final response = await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(response);
|
||||
await FirebaseMessagingService().updateDeviceToken();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp.router(
|
||||
key: navigatorKey,
|
||||
title: 'FRE ACCESS HUB',
|
||||
builder: builder,
|
||||
localizationsDelegates: localizationsDelegates,
|
||||
locale: _locale,
|
||||
supportedLocales: supportedLocales,
|
||||
theme: _theme,
|
||||
darkTheme: _darkTheme,
|
||||
themeMode: _themeMode,
|
||||
routerConfig: _router,
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider(
|
||||
create: (context) => MenuBloc(
|
||||
style: MenuView.list_grid,
|
||||
item: EnumMenuItem.button,
|
||||
entries: MenuEntry.getEntriesByType(MenuEntryType.Home),
|
||||
)..add(MenuEvent()),
|
||||
),
|
||||
BlocProvider<HomeBloc>(
|
||||
create: (context) => HomeBloc()..add(HomeEvent()),
|
||||
),
|
||||
BlocProvider(
|
||||
create: (context) => LocalProfileBloc()..add(LocalProfileEvent()),
|
||||
),
|
||||
],
|
||||
child: MaterialApp.router(
|
||||
key: navigatorKey,
|
||||
title: 'FRE ACCESS HUB',
|
||||
builder: builder,
|
||||
localizationsDelegates: localizationsDelegates,
|
||||
locale: _locale,
|
||||
supportedLocales: supportedLocales,
|
||||
theme: _theme,
|
||||
darkTheme: _darkTheme,
|
||||
themeMode: _themeMode,
|
||||
routerConfig: _router,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,10 @@ class LocalsRepositoryImpl implements LocalsRepository {
|
|||
|
||||
@override
|
||||
Future<bool> update(BuildContext context) async {
|
||||
log('update');
|
||||
LocalsRepositoryImpl.license.add(false);
|
||||
// LocalsRepositoryImpl.license.add(false);
|
||||
final bool response = await remoteDataSource.processLocals(context);
|
||||
context.read<LocalProfileBloc>().add(LocalProfileEvent());
|
||||
LocalsRepositoryImpl.license.add(response);
|
||||
// LocalsRepositoryImpl.license.add(response);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,12 +40,12 @@ class LocalProfileBloc extends Bloc<LocalProfileEvent, LocalProfileState> {
|
|||
emit(state.copyWith(cliName: cliName, cliUUID: cliUUID));
|
||||
}
|
||||
|
||||
void updateProfile(BuildContext context) {
|
||||
LocalsRepositoryImpl.license.add(false);
|
||||
context.read<MenuBloc>().add(MenuEvent());
|
||||
add(LocalProfileEvent());
|
||||
LocalsRepositoryImpl.license.add(true);
|
||||
}
|
||||
// void updateProfile(BuildContext context) {
|
||||
// LocalsRepositoryImpl.license.add(false);
|
||||
// context.read<MenuBloc>().add(MenuEvent());
|
||||
// add(LocalProfileEvent());
|
||||
// LocalsRepositoryImpl.license.add(true);
|
||||
// }
|
||||
}
|
||||
|
||||
class LocalProfileComponentModel extends FlutterFlowModel<LocalProfileComponentWidget> {
|
||||
|
|
|
@ -25,7 +25,9 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
|||
|
||||
Future callback() async {
|
||||
await StorageHelper().set(KeychainStorageKey.clientUUID.value, '');
|
||||
await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(false);
|
||||
final response = await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(response);
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -39,13 +41,6 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
|||
final double baseFontSize = 14.0;
|
||||
final double scaledFontSize = baseFontSize * textScaler.scale(1);
|
||||
final double limitedFontSize = scaledFontSize > 20 ? 12 : scaledFontSize;
|
||||
|
||||
log('LocalProfileComponentWidget: build');
|
||||
log('snapshot.connectionState: ${snapshot.connectionState}');
|
||||
log('snapshot.hasError: ${snapshot.hasError}');
|
||||
log('snapshot.hasData: ${snapshot.hasData}');
|
||||
log('snapshot.data: ${snapshot.data}');
|
||||
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
|
@ -103,7 +98,9 @@ class _LocalProfileComponentWidgetState extends State<LocalProfileComponentWidge
|
|||
highlightColor: Colors.transparent,
|
||||
onTap: () async {
|
||||
await StorageHelper().set(KeychainStorageKey.clientUUID.value, '');
|
||||
await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(false);
|
||||
final response = await LocalsRepositoryImpl().update(context);
|
||||
LocalsRepositoryImpl.license.add(response);
|
||||
},
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(200.0),
|
||||
|
|
|
@ -19,7 +19,7 @@ class MenuRepositoryImpl implements MenuRepository {
|
|||
List<MenuItem?> entries = [];
|
||||
try {
|
||||
for (var entry in menuEntries) {
|
||||
log('Processing entry: ${entry.key}');
|
||||
// log('Processing entry: ${entry.key}');
|
||||
final bool isDefault = await menuDataSource.processDisplayDefault(item, entry, entries);
|
||||
if (isDefault) continue;
|
||||
final licenseValue = await LicenseRepositoryImpl().getLicense(entry.key);
|
||||
|
|
|
@ -3,6 +3,8 @@ import 'dart:async';
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:hub/flutter_flow/nav/nav.dart';
|
||||
import 'package:hub/shared/components/molecules/locals/index.dart';
|
||||
|
||||
import 'package:hub/shared/components/molecules/menu/data/repositories/menu_repository_impl.dart';
|
||||
import 'package:hub/shared/components/molecules/menu/index.dart';
|
||||
|
@ -43,10 +45,9 @@ class MenuBloc extends Bloc<MenuEvent, MenuState> {
|
|||
}
|
||||
|
||||
Future<void> _onMenuEvent(MenuEvent event, Emitter<MenuState> emit) async {
|
||||
log('MenuBloc: waitForSaveCompletion');
|
||||
|
||||
await LicenseRemoteDataSourceImpl().waitForSaveCompletion();
|
||||
log('MenuBloc: _onMenuEvent');
|
||||
|
||||
final List<MenuItem?> NewEntries = await MenuRepositoryImpl().generateMenuEntries(entries, item);
|
||||
emit(state.copyWith(menuEntries: NewEntries));
|
||||
}
|
||||
|
|
|
@ -22,7 +22,6 @@ class LicenseRepositoryImpl implements LicenseRepository {
|
|||
log('updateLicense');
|
||||
bool result = false;
|
||||
final bool isNewVersion = await localDataSource.isNewVersion();
|
||||
log('isNewVersion: $isNewVersion');
|
||||
result = await remoteDataSource.setupLicense(database, isNewVersion);
|
||||
if (isNewVersion) {
|
||||
result = await remoteDataSource.fetchLicenses(isNewVersion);
|
||||
|
@ -41,7 +40,6 @@ class LicenseRepositoryImpl implements LicenseRepository {
|
|||
@override
|
||||
Future<String?> getLicense(String key) async {
|
||||
final response = await localDataSource.get(key);
|
||||
log('getLicense: $key: $response');
|
||||
return response;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ class KeychainHelper implements BaseStorage {
|
|||
if (response.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
log('() => get keychain: $key : ${response.first['value']}');
|
||||
// log('() => get keychain: $key : ${response.first['value']}');
|
||||
return response.first['value'].toString();
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ class KeychainHelper implements BaseStorage {
|
|||
'createdAt': date,
|
||||
},
|
||||
conflictAlgorithm: ConflictAlgorithm.replace);
|
||||
log('() => set keychain: $key : $value');
|
||||
// log('() => set keychain: $key : $value');
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
Loading…
Reference in New Issue