'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