[英]Flutter is not updating cubit state
我正在練習 BloC cubit,它沒有更新 state。 這是我的主要文件。 我已經使用 BlocProvider 創建實例和 BlocBuilder 來呈現 state 但是每當我單擊增量和減量時,它都不會重新呈現文本小部件。
import 'package:bloc_counter_app/counter_cubit.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'bloc counter app',
theme: ThemeData(primarySwatch: Colors.red),
home: HomePage(),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Bloc Counter App'),
),
body: BlocProvider<CounterCubit>(
create: (context) => CounterCubit(),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
BlocBuilder<CounterCubit, CounterState>(builder: (context, state) {
return Text(
state.counterValue.toString(),
style: TextStyle(
fontSize: 20.0,
),
);
}),
SizedBox(
height: 50.0,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
FloatingActionButton(
tooltip: 'Increment',
child: Icon(Icons.add),
onPressed: () {
BlocProvider.of<CounterCubit>(context).increment();
}),
FloatingActionButton(
tooltip: 'decrement',
child: Icon(Icons.remove),
onPressed: () =>
BlocProvider.of<CounterCubit>(context).decrement())
],
)
],
),
),
);
}
}
這是我的反肘文件
導入“包:bloc/bloc.dart”; 導入“包:meta/meta.dart”;
part 'counter_state.dart';
class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(CounterState(counterValue: 0));
void increment() => emit(CounterState(counterValue: state.counterValue + 1));
void decrement() => emit(CounterState(counterValue: state.counterValue - 1));
}
這是我的計數器 state 文件
part of 'counter_cubit.dart';
class CounterState {
int counterValue;
CounterState({@required this.counterValue});
}
在您的按鈕回調中,您試圖通過提供肘位的相同上下文來獲取肘位。 創建一個單獨的小部件或使用Builder
包裝孩子。 更多信息在這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.