fix: bloc provider in homePage

This commit is contained in:
J. A. Messias 2024-12-04 16:54:07 -03:00
parent eb093299d2
commit b8c2aab73c
9 changed files with 76 additions and 69 deletions

View File

@ -21,27 +21,18 @@ 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(
return Builder(
builder: (context) {
LocalsRepositoryImpl.license.add(true);
// context.read<LocalProfileBloc>().updateProfile(context);
@ -55,7 +46,6 @@ class _HomePageWidgetState extends State<HomePageWidget> {
body: buildPage(context),
);
},
),
);
}

View File

@ -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,14 +192,32 @@ 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(
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,
@ -207,6 +228,7 @@ class _AppState extends State<App> with WidgetsBindingObserver {
darkTheme: _darkTheme,
themeMode: _themeMode,
routerConfig: _router,
),
);
}
}

View File

@ -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;
}

View File

@ -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> {

View File

@ -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),

View File

@ -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);

View File

@ -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));
}

View File

@ -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;
}

View File

@ -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