如何访问 Flutter 中与其他 Widget 关联的变量? [关闭]

Posted

技术标签:

【中文标题】如何访问 Flutter 中与其他 Widget 关联的变量? [关闭]【英文标题】:How to Access a Variable that is Associated with other Widget in Flutter? [closed] 【发布时间】:2021-07-12 03:56:30 【问题描述】:

关于一个让我头疼的问题,我需要您的帮助,这里我有一个材质按钮,里面有一个变量,我想在文本小部件中使用它。

                   MaterialButton(
                         onPressed: () 
                          // My Random Code Goes Here. (Never Mind)

                           var currentEmoji = ...;
                         ,

如您所见,我有一个 Material Button,里面有一个大代码,我需要向您展示的是“currentEmoji”变量。

我需要在这个文本小部件中使用这个变量,它位于这段代码的正下方,

                       child: Text(
                          *currentEmoji*,
                          textScaleFactor: 2,
                        ),
    我有一个材质按钮 我有一个 On Pressed 功能。 在该函数中有一个变量currentEmoji 我想在文本小部件中显示此变量 如何在 onPressed 函数之外使用currentEmoji 变量。

我想在这方面寻求您的帮助。

【问题讨论】:

您已经在这个材料按钮上提出了 3-4 个关于同一主题的问题。不承认任何用户的任何回答。 先生,不,Material 按钮是一样的,我承认,但这是一个不同的场景,我真的很想知道我们如何在 onPressed 之外访问currentEmoji,之前我没有曾经问过,#admitting Material Buttons 在每种情况下都会被使用。这只是提出问题的一种方式。我希望你明白。并帮助我寻找这个答案的根源。 @ProblematicDude 假设它在同一个类中但在不同的函数中,只需为其创建一个全局变量。如果它在同一个函数(创建小部件的函数)中,则在该函数中创建一个局部变量。示例:void _buildWidget() var emoji = 'default'; ... @ProCo 只需声明它在 onPressed 方法之外。有什么大不了的 @Shree 我和你一起编辑,但请向 OP 解释原因。他们可能试图通过改进负分问题来摆脱问题禁令,这是个好主意。帮助他们在不使答案无效的情况下实际改进这一点(我认为这是你的原因......)。 【参考方案1】:

看看in dartpad:

您需要在这两个小部件之外声明变量,如下所示:

class _MyWidgetState extends State<MyWidget> 
  String _currentEmoji = 'my initial emoji';

  void _setEmoji() 
    // My Random Code Goes Here. (Never Mind)
    setState(() 
      _currentEmoji = 'new emoji';
    );
  

  @override
  Widget build(BuildContext context) 
    return Column(children: [
      ElevatedButton(
        onPressed: _setEmoji,
        child: Text('press me'),
      ),
      Text(_currentEmoji),
    ]);
  

【讨论】:

【参考方案2】:

请看下面的代码,

class MyHomeActivity extends StatelessWidget 
  // elements declared here can be used anywhere in this class
  var currentEmoji;
  @override
  Widget build(BuildContext context) 
    return Container(
      child: MaterialButton(
        onPressed: () 
          // use currentEmoji here
        ,
      ),
    );
  

没有冒犯,但这是全局声明变量的基本概念,通用编程概念。

我鼓励您阅读 dart 语言here 的官方文档。

这肯定会让您的开发之旅变得轻松。

【讨论】:

以上是关于如何访问 Flutter 中与其他 Widget 关联的变量? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Flutter ListView.Builder() 在可滚动列中与其他小部件

如何在 Flutter 中禁用默认的 Widget 飞溅效果

Flutter,访问父容器widget的padding值

Flutter,按下按钮后如何在Text Widget上粘贴数据?

使用 BackdropFilter 会影响 Row Widget 中的其他 Widget - Flutter Web

在颤动中与堆栈对齐