Flutter bloc - 如何使用 BlocBuilder?

问题描述 投票:0回答:1

我是 Flutter 初学者,即将使用 Bloc。 但出现此错误消息,我尝试使用“extends StateStreamable”或“implements” 但它不起作用。请帮我解决这个错误。谢谢你。

“CalculatorBloc”不符合类型参数“B”的绑定“StateStreamable”。 (文档)尝试使用“StateStreamable”或其子类的类型。

在此输入图片描述

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);
}

使用 Flutter bloc 并编写一个应用程序。

flutter dart bloc
1个回答
0
投票

根据 doc,在

BlocBuilder
中,您应该使用
CalculatorState
而不是
CalculatorEvent

@override
Widget build(BuildContext context) {
    return BlocBuilder<CalculatorBloc, CalculatorState> (
© www.soinside.com 2019 - 2024. All rights reserved.