首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setState不更新StateFul Widget

setState不更新StateFul Widget
EN

Stack Overflow用户
提问于 2022-04-18 19:54:03
回答 1查看 266关注 0票数 0

我的代码有问题。我试图通过将setState的函数设置为父函数来更新子部件,然后在单击按钮后从无状态小部件中启动它。看起来就像

主(状态) ->父(无状态)在TextField输入更改->子(状态)时触发TextField

这是代码

代码语言:javascript
复制
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,),
          ],
        ),
      ),
    );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-19 02:35:17

尝试使用get插件,https://pub.dev/packages/get,您可以使用它更新无状态小部件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71916443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档