小编Dmy*_*ian的帖子

Flutter bloc 未在 7.2.0 版本中使用 Equatable 进行重建

我创建了简单的应用程序来测试 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)

state-management dart flutter bloc

5
推荐指数
1
解决办法
4960
查看次数

如何在 Dart 中同时对接口使用受限 mixin 并同时实现该接口?

我拥有的:

  1. 具有必须重写的方法的接口 (InterfaceA)。
  2. 仅限于接口 mixin (MixinB) 以及我想在不重写的情况下使用的方法。
  3. 具有接口实现和 mixin 使用的类(ClassC)。

问题:是否可以同时使用受限 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)

oop interface mixins dart

5
推荐指数
1
解决办法
454
查看次数

标签 统计

dart ×2

bloc ×1

flutter ×1

interface ×1

mixins ×1

oop ×1

state-management ×1