'flutter bloc outdated need help how do i update this, PreferencesBloc Try declaring a zero argument constructor, doesn't have a zero argument constru
it is an outdated multilanguage code with bloc flutter, the error is in, Any suggestion to fix it would be greatly appreciated.
PreferencesBloc({
required PreferencesRepository preferencesRepository,
required Locale initialLocale,
}) : assert(preferencesRepository != null),
_preferencesRepository = preferencesRepository,
_initialState = PreferencesState(locale: initialLocale);
The superclass 'Bloc<PreferencesEvent, PreferencesState>' doesn't have a zero argument constructor. Try declaring a zero argument constructor in 'Bloc<PreferencesEvent, PreferencesState>', or explicitly invoking a different constructor in 'Bloc<PreferencesEvent, PreferencesState>'.
import 'dart:ui';
import 'package:meta/meta.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appenvios/repositories/preferences_repository.dart';
abstract class PreferencesEvent extends Equatable {}
class ChangeLocale extends PreferencesEvent {
final Locale locale;
ChangeLocale(this.locale);
@override
List<Object> get props => [locale];
}
class PreferencesState extends Equatable {
final Locale locale;
const PreferencesState({required this.locale});
@override
List<Object> get props => [locale];
}
class PreferencesBloc extends Bloc<PreferencesEvent, PreferencesState> {
final PreferencesRepository _preferencesRepository;
final PreferencesState _initialState;
PreferencesBloc({
required PreferencesRepository preferencesRepository,
required Locale initialLocale,
}) : assert(preferencesRepository != null),
_preferencesRepository = preferencesRepository,
_initialState = PreferencesState(locale: initialLocale);
@override
PreferencesState get initialState => _initialState;
@override
Stream<PreferencesState> mapEventToState(
PreferencesEvent event,
) async* {
if (event is ChangeLocale) {
await _preferencesRepository.saveLocale(event.locale);
yield PreferencesState(locale: event.locale);
}
}
}
Solution 1:[1]
I fixed it in the following way:
class PreferencesBloccInitial extends PreferencesState {
const PreferencesBloccInitial() : super();
}
and here I change like this complete code
PreferencesBloc({
required PreferencesRepository preferencesRepository,
Locale? initialLocale,
}) : assert(true),
_preferencesRepository = preferencesRepository,
_initialState = PreferencesState(locale: initialLocale), super(const PreferencesBloccInitial());
complete code and add null safety
import 'dart:ui';
import 'package:meta/meta.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:appenvios/repositories/preferences_repository.dart';
import 'package:bloc/bloc.dart';
abstract class PreferencesEvent extends Equatable {}
class ChangeLocale extends PreferencesEvent {
final Locale? locale;
ChangeLocale(this.locale);
@override
List<Object> get props => [locale as Object];
}
class PreferencesState extends Equatable {
final Locale? locale;
const PreferencesState({ this.locale});
@override
List<Object> get props => [locale as Object];
}
class PreferencesBloccInitial extends PreferencesState {
const PreferencesBloccInitial() : super();
}
class PreferencesBloc extends Bloc<PreferencesEvent, PreferencesState> {
final PreferencesRepository _preferencesRepository;
final PreferencesState _initialState;
PreferencesBloc({
required PreferencesRepository preferencesRepository,
Locale? initialLocale,
}) : assert(true),
_preferencesRepository = preferencesRepository,
_initialState = PreferencesState(locale: initialLocale), super(const PreferencesBloccInitial());
@override
PreferencesState get initialState => _initialState;
@override
Stream<PreferencesState> mapEventToState(
PreferencesEvent event,
) async* {
if (event is ChangeLocale) {
await _preferencesRepository.saveLocale(event.locale);
yield PreferencesState(locale: event.locale);
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Jose Alejandro Sanchez |
