作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这个如何使用StatesRebuilder
的基本示例中,单击一个项目会增加counter
的值。
意思是:
当我点击第一个项目时,counter
是1
,并且在单击其他项目后,counter
会增加到2
,但应该保持在1
而不是2
。counter
值不应继承自我点击的上一个项目。
我的代码不正确:
import 'package:flutter/material.dart';
import 'package:states_rebuilder/states_rebuilder.dart';
class CounterBlocOne extends StatesRebuilder {
Map<String,dynamic> _map = Map<String,dynamic>();
int counter = 0;
increment(tagID) {
counter = _map[tagID];
_map[tagID] = counter++;
rebuildStates([tagID]);
}
}
class RebuildOneExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Injector(
models: [() => CounterBlocOne()],
builder: (_, __) => CounterGrid(),
);
}
}
class CounterGrid extends StatelessWidget {
final bloc = Injector.get<CounterBlocOne>();
@override
Widget build(BuildContext context) {
return StateWithMixinBuilder(
mixinWith: MixinWith.automaticKeepAliveClientMixin,
builder: (_, __) => Padding(
padding: EdgeInsets.all(10),
child: Column(
children: <Widget>[
Text("Rebuild The tapped widget"),
Text(
"This page is mixin with automaticKeepAliveClientMixin to not rebuild on sweep in"),
Expanded(
child: GridView.count(
crossAxisCount: 3,
children: <Widget>[
for (var i = 0; i < 12; i++)
StateBuilder(
viewModels: [bloc],
builder: (_, tagID) => GridItem(
count: bloc.counter,
onTap: () => bloc.increment(tagID),
),
)
],
),
),
],
),
),
);
}
}
class GridItem extends StatelessWidget {
final int count;
final Function onTap;
GridItem({this.count, this.onTap});
@override
Widget build(BuildContext context) {
return InkWell(
child: Container(
margin: EdgeInsets.all(5),
decoration: BoxDecoration(
color: Colors.lightBlue,
border:
Border.all(color: Theme.of(context).primaryColorDark, width: 4),
borderRadius: BorderRadius.circular(6),
),
child: Center(
child: Text(
"$count",
style: TextStyle(
color: Colors.white,
fontSize: 50,
),
),
),
),
onTap: onTap,
);
}
}
最佳答案
increment(tagID) {
counter = _map[tagID] ?? 0; // change this
_map[tagID] = ++counter; // and this
rebuildStates([tagID]);
}
关于flutter - Flutter States_Rebuilder仅更新列表中的录音带计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753325/
我是一名优秀的程序员,十分优秀!