在 Flutter 中的 Widget 构建外部声明变量

Posted

技术标签:

【中文标题】在 Flutter 中的 Widget 构建外部声明变量【英文标题】:Declare variable outside Widget build in Flutter 【发布时间】:2021-11-24 07:25:52 【问题描述】:

我正在尝试在其他类中使用变量,但它不起作用。为什么我不能在 Widget 构建之外声明 orderChanged?

代码:

class HomeButton extends StatefulWidget 

  static bool orderChanged;

  @override
  _HomeButtonState createState() => _HomeButtonState();


class _HomeButtonState extends State<HomeButton> 

 
  @override
  Widget build(BuildContext context) 
    bool _orderChanged = false;
    bool orderChanged = _orderChanged;
    return
        .
        .
        .
       
  onPressed: () async 

     setState(() 
     _orderChanged = true;
    );
  
   .
   .
   .
  
        

谢谢你:)

【问题讨论】:

订单变化值没有变化。它总是错误的。这是你的问题吗? 不,它在 setState 中变为 true!问题是将 _orderChanged 导出为 Widget 构建之外的 orderChanged。我想在另一个类中使用 orderChanged! 一言以蔽之,不能这样导出 在类使用状态管理之外使用一些变量值 【参考方案1】:

您应该在构建方法之外声明变量,因为它会一次又一次地构建。您可以声明_HomeButtonState 类或HomeButton。 如果您想在HomeButton(有状态类)中声明变量(即 orderChanged),您可以使用

widget.orderChanged;

【讨论】:

以上是关于在 Flutter 中的 Widget 构建外部声明变量的主要内容,如果未能解决你的问题,请参考以下文章

如何专门为 Flutter 中的 Class 方法构建 Provider 包的 Consumer Widget?

Flutter 中 stateless 和 stateful widget 的区别[Flutter专题60]

Flutter构建布局之路

flutter通过GlobalKey在自定义Widget外部获取其state刷新页面

Flutter - 无法修改 List<Widget>

当我在 Flutter 中构建 Widget 时,我可以在没有 Scaffold 的情况下制作它吗?