【发布时间】:2023-04-08 15:19:02
【问题描述】:
我遇到了一个问题,即流订阅 cubit 不听 cubit 的发射状态。这是我如何在代码中实现它们的示例。
这是我想听的腕尺
class ButtonPressCubit extends Cubit<ButtonState> {
ButtonPressCubit() : super(ButtonNotPressed());
void emitButtonOnePressed() => emit(ButtonOnePressed());
void emitButtonTwoPressed() => emit(ButtonTwoPressed());
}
part of 'internet_cubit.dart';
@immutable
abstract class ButtonState {}
class ButtonNotPressed extends ButtonState {}
class ButtonOnePressed extends ButtonState {}
class ButtonTwoPressed extends ButtonState {}
这是我要订阅的腕尺,我要听的腕尺。
class CounterCubit extends Cubit<CounterState> {
final ButtonPressCubit buttonPressCubit;
StreamSubscription buttonPressStreamSubscription;
CounterCubit({@required this.internetCubit})
: super(CounterState(counterValue: 0, wasIncremented: false)) {
buttonPressStreamSubscription = buttonPressCubit.listen(print);
}
void increment() => emit(
CounterState(counterValue: state.counterValue + 1, wasIncremented: true));
void decrement() => emit(CounterState(
counterValue: state.counterValue - 1, wasIncremented: false));
@override
Future<void> close() {
buttonPressStreamSubscription.cancel();
return super.close();
}
}
之后,我调用了 ButtonPressCubit emitButtonOnePressed(),如下所示。
MaterialButton(
child: Text('Buton 2'),
onPressed: () {
BlocProvider.of<ButtonPressCubit>(context)
.emitButtonTwoPressed();
},
),
但这不起作用。如何修复它以获得肘部的状态。
【问题讨论】:
-
您在该页面上注册了 Cubit 吗?
-
不,怎么办?
标签: flutter dart flutter-bloc dart-async dart-stream