yong
yong

Reputation: 23

Flutter bloc - How can I use BlocBuilder?

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.

Upvotes: 2

Views: 83

Answers (2)

nitisha jain
nitisha jain

Reputation: 11

You need to use your CalculatorState and not "CalculatorEvent" in your builder function

Upvotes: 0

Vladyslav Ulianytskyi
Vladyslav Ulianytskyi

Reputation: 2541

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

@override
Widget build(BuildContext context) {
    return BlocBuilder<CalculatorBloc, CalculatorState> (

Upvotes: 1

Related Questions