skip to Main Content

I’m a Flutter Beginer and about to use Bloc.
but this error message comes up and I tried to use ‘extends StateStreamable<CalculatorEvent>’ or ‘implements’
but it doesn’t work. please help me to solve this error. Thank you.

‘CalculatorBloc’ doesn’t conform to the bound ‘StateStreamable<CalculatorEvent>’ of the type parameter ‘B’. (Documentation) Try using a type that is or is a subclass of ‘StateStreamable<CalculatorEvent>’.

enter image description here

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:calc/state/bloc/calculator_bloc.dart';

class CalculatorScreen extends StatelessWidget  {
    const CalculatorScreen({super.key});

    @override
    Widget build(BuildContext context) {
        return BlocBuilder<CalculatorBloc, CalculatorEvent> (
            builder: (context, state) {
          return Scaffold(
          resizeToAvoidBottomInset: false,
          body: SafeArea(
            child: Container(
                color: AppColors.mainBackgroundColor1,
                width: MediaQuery
                    .of(context)
                    .size
                    .width,
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: [
                    Text("MAIN"),
                  ],
                )),
          ),
        );
      },
    );
  }
}
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:meta/meta.dart';
import 'package:bloc/bloc.dart';

part 'calculator_event.dart';
part 'calculator_state.dart';

class CalculatorBloc extends Bloc<CalculatorEvent, CalculatorState> {
  CalculatorBloc() : super(const CalculatorInitial(0)) {
    //on<CalculatorCommandEvent>((event, emit) => onCalculatorCommandEvent(event, emit));
    on<CalculatorInitPressed>(
      (event, emit) => emit(CalculatorInitial(0)),
    );
  }

@immutable
abstract class CalculatorEvent {
  const CalculatorEvent();
}

class CalculatorInitPressed extends CalculatorEvent {
  const CalculatorInitPressed();
}

@immutable
abstract class CalculatorState {
  final int value;

  const CalculatorState(this.value);
}

class CalculatorInitial extends CalculatorState {
  const CalculatorInitial(super.value);
}

use Flutter bloc and write an app.

2

Answers


  1. According to the doc, in the BlocBuilder you should use CalculatorState and not CalculatorEvent:

    @override
    Widget build(BuildContext context) {
        return BlocBuilder<CalculatorBloc, CalculatorState> (
    
    Login or Signup to reply.
  2. You need to use your CalculatorState and not "CalculatorEvent" in your builder function

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search