【发布时间】:2021-11-24 05:50:55
【问题描述】:
我对flutter_bloc库很陌生,我正在尝试制作增量减量按钮的组件,但是当我尝试复制组件时,我遇到了问题,当我按下第二个增量按钮组件时,第一个组件也更新了像这样result。我希望他们有分离的结果。我该如何解决?
这是我的集团代码:
import 'package:bloc/bloc.dart';
abstract class QtyEvent{}
class Increment extends QtyEvent {}
class Decrement extends QtyEvent {}
class QtyBloc extends Bloc<QtyEvent, int> {
QtyBloc() : super(0) {
on<Increment>((event, emit) =>
emit(state+1));
on<Decrement>((event, emit) =>
emit(state-1));
}
}
这是我的组件代码:
class _QtyState extends State<Qty> {
int _n = 0;
@override
void add() {
setState(() {
_n++;
});
context.read<QtyBloc>().add(Increment());
}
void minus() {
setState(() {
if (_n != 0) _n--;
});
context.read<QtyBloc>().add(Decrement());
}
QtyBloc qtybloc = QtyBloc();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),),
body: Column(
children: [
Row(
children: [
GestureDetector(
onTap: minus,
child: Container(
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.red),
child: Icon(Icons.remove),
),
),
Text(
context.watch<QtyBloc>().state.toString(),
style: TextStyle(fontSize: 20),
),
GestureDetector(
onTap: add,
child: Container(
padding: EdgeInsets.all(5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: Colors.red),
child: Icon(Icons.add),
),
),
],
),
],
),
);
}
}
【问题讨论】: