我创建了简单的应用程序来测试 bloc 7.2.0,并发现 BlocBuilder 在第一次成功重建后不会重建。在每个其他触发器上,bloc 都会发出新状态,但 BlocBuilder 会忽略它。
请注意,如果我 extends Equatable从状态和事件中删除及其覆盖,则每次按下按钮时 BlocBuilder 都会重建 UI。颤振版本2.5.1
如果 Equatable 是必要的,为什么它不能使用它呢?如果 Equatable 不是必需的,为什么在通过 VSCode 扩展进行初始创建时使用它。
我的代码:
块部分
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
//bloc
class MainBloc extends Bloc<MainEvent, MainState> {
MainBloc() : super(MainInitial()) {
on<MainButtonPressedEvent>(_onMainButtonPressedEvent);
}
void _onMainButtonPressedEvent(
MainButtonPressedEvent event, Emitter<MainState> emit) {
emit(MainCalculatedState(event.inputText));
}
}
//states
abstract class MainState extends Equatable {
const MainState();
@override
List<Object> get props => [];
}
class MainInitial extends MainState {}
class MainCalculatedState extends MainState {
final String exportText; …Run Code Online (Sandbox Code Playgroud) 我拥有的:
问题:是否可以同时使用受限 mixin 与该接口的实现进行交互?
下面的代码是一个示例,展示了我理想情况下如何使用 mixin 和界面
abstract class InterfaceA {
int getValue();
}
mixin MixinB on InterfaceA {
int getPreValue(int i) => i;
}
// Error:
// 'Object' doesn't implement 'InterfaceA' so it can't be used with 'MixinB'.
class ClassC with MixinB implements InterfaceA {
@override
getValue() => getPreValue(2);
}
Run Code Online (Sandbox Code Playgroud)