Flutter 无法从相同的单击操作颤振获取相同的状态

Flutter 无法从相同的单击操作颤振获取相同的状态,flutter,events,state,bloc,stateful,Flutter,Events,State,Bloc,Stateful,我在BlocLibrary()中遇到了一个问题 我需要在BlocListner/BlocBuilder中接收相同的状态,让我用代码解释一下: 这是一个集团(很少解释): class CounterBloc扩展了Bloc{ @凌驾 AppState get initialState=>InititalState(); @凌驾 流mapEventToState(计数器事件)异步*{ 开关(事件){ case CounterEvent.getState: 收益率计数器(值:0); 打破 } 以下是国

我在BlocLibrary()中遇到了一个问题 我需要在BlocListner/BlocBuilder中接收相同的状态,让我用代码解释一下: 这是一个集团(很少解释):

class CounterBloc扩展了Bloc{
@凌驾
AppState get initialState=>InititalState();
@凌驾
流mapEventToState(计数器事件)异步*{
开关(事件){
case CounterEvent.getState:
收益率计数器(值:0);
打破
}
以下是国家级:

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 }';
}
import'package:flatter_bloc/flatter_bloc.dart';
枚举状态事件{getState}
抽象类AppState扩展了Equalable{
常量AppState();
@凌驾
列表获取道具=>[];
}
类计数器扩展AppState{
最终整数计数;
常量计数器({@required this.count});
@凌驾
列表获取道具=>[count];
@凌驾
字符串toString()=>'计数器{count:$count}';
}
下面是我的bloc listener/builder:

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),
          ),
        );
      },
    ),
  )
BlocListener(
侦听器:(上下文、状态){
如果(状态为计数器){
**这里我需要相同的状态,这意味着如果我按下getState,它每次都会打印0**
打印(状态值);
}
},
孩子:BlocBuilder(
生成器:(上下文、状态){
返回中心(
子:文本(
“${value}”,
样式:TextStyle(fontSize:24.0),
),
);
},
),
)

更改你的AppState,你可以阅读更多关于Equalable用法的信息。这篇文章主要是重复的

如果希望相同的状态背靠背触发多个转换,则不应使用Equalable


BlocListener应该定义一个指向要侦听的bloc类的bloc参数。如果我按一次,我可以得到结果,意味着可以打印。但是如果我反复按,它将不会收到,那么您的计数器状态定义缺少props函数调用。显示您的计数器类。@Thepeanut我已经用state类更新了问题OK,我错了sed表示不更改count变量的部分。创建Bloc是为了在与旧状态相同的情况下不推送新状态。这就是为什么侦听器只触发一次,因为计数没有更改。
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),
          ),
        );
      },
    ),
  )
abstract class AppState { 
  const AppState();
} 

class Counter extends AppState { 
  final int count; 

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

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