Anonymous
Использование HydratedBloc - LaterItiLizationEerror Field '__Storage@30190796' не было инициализировано
Сообщение
Anonymous » 31 янв 2025, 08:53
Я пытаюсь выучить трепетание и блок/ гидратблок. Кажется, я не могу преодолеть исключение, которое я продолжаю получать, пытаясь сохранить ценность для локального хранилища. Я попытался создать этот новый более простой проект и сделал много устранения неполадок, но я все еще получаю ту же ошибку: < /p>
' lateerror (LateInitializationEerror: поле' __storage@30190796 ' не был инициализирован.) '. .dart:
Код: Выделить всё
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:hydrated_bloc_debugging/counter/counter_cubit.dart';
import 'package:path_provider/path_provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
HydratedBloc.storage = await HydratedStorage.build(
storageDirectory: HydratedStorageDirectory(
(await getApplicationDocumentsDirectory()).path,
),
);
runApp(
const MyApp(),
);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => CounterCubit(),
child: MaterialApp(
home:
const MyHomePage(), // Use a named route or a stateless widget here
),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Counter App'),
),
body: Center(
child: BlocBuilder(
builder: (context, state) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'You have pushed the button this many times:',
),
Text(
'${state.counterValue}',
),
],
);
},
),
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
FloatingActionButton(
onPressed: () {
context.read().increment();
},
tooltip: 'Increment',
child: const Icon(Icons.add),
),
FloatingActionButton(
onPressed: () {
context.read().decrement();
},
tooltip: 'Decrement',
child: const Icon(Icons.remove),
),
],
),
);
}
}
counter_cubit.dart:
Код: Выделить всё
import 'package:equatable/equatable.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
part 'counter_state.dart';
class CounterState extends Equatable {
final int counterValue;
const CounterState({
required this.counterValue,
});
@override
List get props => [counterValue];
factory CounterState.fromMap(Map json) => CounterState(
counterValue: json['counterValue'] as int,
);
Map toMap() {
return {
'counterValue': counterValue,
};
}
}
kounter_state.dart:
Код: Выделить всё
part of 'counter_cubit.dart';
class CounterCubit extends Cubit with HydratedMixin {
CounterCubit() : super(CounterState(counterValue: 0));
void increment() => emit(
CounterState(counterValue: state.counterValue + 1),
);
void decrement() => emit(
CounterState(counterValue: state.counterValue - 1),
);
@override
CounterState? fromJson(Map json) {
return CounterState.fromMap(json);
}
@override
Map toJson(CounterState state) => state.toMap();
}
Я потратил слишком много времени, пытаясь выяснить это, поэтому любая помощь была бы очень оценена!
Подробнее здесь:
https://stackoverflow.com/questions/794 ... 96-has-not
1738302820
Anonymous
Я пытаюсь выучить трепетание и блок/ гидратблок. Кажется, я не могу преодолеть исключение, которое я продолжаю получать, пытаясь сохранить ценность для локального хранилища. Я попытался создать этот новый более простой проект и сделал много устранения неполадок, но я все еще получаю ту же ошибку: < /p> ' lateerror (LateInitializationEerror: поле' __storage@30190796 ' не был инициализирован.) '. .dart: [code]import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; import 'package:hydrated_bloc_debugging/counter/counter_cubit.dart'; import 'package:path_provider/path_provider.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); HydratedBloc.storage = await HydratedStorage.build( storageDirectory: HydratedStorageDirectory( (await getApplicationDocumentsDirectory()).path, ), ); runApp( const MyApp(), ); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return BlocProvider( create: (context) => CounterCubit(), child: MaterialApp( home: const MyHomePage(), // Use a named route or a stateless widget here ), ); } } class MyHomePage extends StatelessWidget { const MyHomePage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Counter App'), ), body: Center( child: BlocBuilder( builder: (context, state) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ const Text( 'You have pushed the button this many times:', ), Text( '${state.counterValue}', ), ], ); }, ), ), floatingActionButton: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ FloatingActionButton( onPressed: () { context.read().increment(); }, tooltip: 'Increment', child: const Icon(Icons.add), ), FloatingActionButton( onPressed: () { context.read().decrement(); }, tooltip: 'Decrement', child: const Icon(Icons.remove), ), ], ), ); } } [/code] [b] counter_cubit.dart:[/b] [code]import 'package:equatable/equatable.dart'; import 'package:hydrated_bloc/hydrated_bloc.dart'; part 'counter_state.dart'; class CounterState extends Equatable { final int counterValue; const CounterState({ required this.counterValue, }); @override List get props => [counterValue]; factory CounterState.fromMap(Map json) => CounterState( counterValue: json['counterValue'] as int, ); Map toMap() { return { 'counterValue': counterValue, }; } } [/code] [b] kounter_state.dart:[/b] [code]part of 'counter_cubit.dart'; class CounterCubit extends Cubit with HydratedMixin { CounterCubit() : super(CounterState(counterValue: 0)); void increment() => emit( CounterState(counterValue: state.counterValue + 1), ); void decrement() => emit( CounterState(counterValue: state.counterValue - 1), ); @override CounterState? fromJson(Map json) { return CounterState.fromMap(json); } @override Map toJson(CounterState state) => state.toMap(); } [/code] Я потратил слишком много времени, пытаясь выяснить это, поэтому любая помощь была бы очень оценена! Подробнее здесь: [url]https://stackoverflow.com/questions/79401698/using-hydratedbloc-lateinitilizationerror-field-storage30190796-has-not[/url]