Невозможно получить одно и то же состояние из одного и того же щелчка. - PullRequest
0 голосов
/ 28 марта 2020

Я столкнулся с проблемой в BlocLibrary (https://bloclibrary.dev/). Мне нужно получить такое же состояние в BlocListner / BlocBuilder, позвольте мне объяснить в коде: Это Blo c (для небольшого объяснения) :

class CounterBloc extends Bloc<CounterEvent, AppState> {
  @override
  AppState get initialState => InititalState();

  @override
  Stream<AppState> mapEventToState(CounterEvent event) async* {
    switch (event) {
      case CounterEvent.getState:
        yield Counter(value: 0); 
        break;
  }

ЗДЕСЬ ГОСУДАРСТВЕННЫЙ КЛАСС:

import 'package:flutter_bloc/flutter_bloc.dart';
enum StateEvent { getState }

abstract class AppState extends Equatable {
  const AppState();

  @override
  List<Object> get props => [];
}


class Counter extends AppState {
  final int count;
  const Counter({@required this.count});
  @override
  List<Object> get props => [count];

  @override
  String toString() => 'Counter { count: $count }';
}

Вот вам go для моего бло c слушатель / строитель:

BlocListener<CounterBloc, AppState>(
    listener: (context, state) {
      if (state is Counter) {

  **Here I needed same state, means if I press getState, it should print 0 everytime**
        print(state. value);

      }
    },
    child: BlocBuilder<CounterBloc, AppState>(
      builder: (context, state) {
        return Center(
          child: Text(
            '${value}',
            style: TextStyle(fontSize: 24.0),
          ),
        );
      },
    ),
  )

1 Ответ

1 голос
/ 28 марта 2020

Измените свой AppState, вы можете узнать больше об использовании Equatable здесь . Этот пост является в основном дублированием this .

. Вы не должны использовать Equatable, если хотите, чтобы одно и то же состояние при одновременном запуске вызывало несколько переходов.

abstract class AppState { 
  const AppState();
} 

class Counter extends AppState { 
  final int count; 

  const Counter({@required this.count}); 

  @override
  String toString() => 'Increment { count: $count }'; 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...