我的代码有问题。我试图通过将setState的函数设置为父函数来更新子部件,然后在单击按钮后从无状态小部件中启动它。看起来就像
主(状态) ->父(无状态)在TextField输入更改->子(状态)时触发TextField
这是代码
Function stateGoldTotalBox = (){}; //storing the setState function here
class BuildGoldTotalBox extends StatefulWidget {
final String type;
BuildGoldTotalBox({required this.type});
@override
State<BuildGoldTotalBox> createState() => _BuildGoldTotalBoxState();
}
class _BuildGoldTotalBoxState extends State<BuildGoldTotalBox> {
int _amount = 0;
Map language = globals.language;
Future<bool> _updateState({required int amount}) async{
if(this.mounted) {
setState(() {
_amount = amount;
print('fired'); //this on is working fine
});
}
return true;
}
@override
void initState() {
// TODO: implement initState
super.initState();
stateGoldTotalBox = _updateState;
}
@override
Widget build(BuildContext context) {
print(_amount); //this also working to check if setState working
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.grey,width: 0.5),
),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(language['total'].toString().toCapitalized()),
Text(_amount.toStringAsFixed(2)), //THIS ONE DOES NOT CHANGE
SvgPicture.asset('lib/assets/currency/money.svg',height: 20.0,),
],
),
),
);
}
}发布于 2022-04-19 02:35:17
尝试使用get插件,https://pub.dev/packages/get,您可以使用它更新无状态小部件。
https://stackoverflow.com/questions/71916443
复制相似问题