如何实现Flutter功能

时间:2018-11-18 11:18:12

标签: flutter

有关堆栈订购解决方案(Flutter - changing a Stack Order

摘要-我有一堆要重新排序的小部件。解决方案是使用函数重新创建小部件的正确顺序。在链接到上述作品的示例中(很棒!)。但是,示例窗口小部件很小-只需重复相同的代码即可重新排序就没问题了。

我的真实示例-小部件的堆栈相当复杂,我已经将其重构为可在堆栈顺序函数之间重用的函数:

让我们说原始堆栈将此作为堆栈中的小部件之一:

    final statusMessage = new Container(
    padding: new EdgeInsets.all(3.0),
    margin: new EdgeInsets.only(bottom: 0.0),
    child: new Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        new Text(
          statusText, 
          style: themeData.textTheme.subhead,
        ),
      ],
    ),
    alignment: Alignment.topCenter);

我一直在单个Widget构建类中声明所有这些Widget。

对堆栈进行重新排序的功能不在此构建功能之外。一个例子:

 void swapStackChildren() {
     setState(() {
        stackChildren = [
          Positioned.fill(
            child: statusMessage,
            key: GlobalKey(),
          ),
          Positioned.fill(
            child: widget2,  // a complex widget
            key: GlobalKey(),
          ),
         etc....
        ];
   });

}

理想情况下,我需要一种方法(向前)引用在build方法中声明的swapStackChildren中的小部件,或者在build方法之外引用“上下文”的方法,以便我可以引用themeData。

也许是我对页面的结构/布局缺乏了解?我只有一个Widget构建类,在该类中声明了我所有的窗口小部件(标题,内容区域,按钮等),并且上述代码中的函数无法引用这些窗口小部件。

0 个答案:

没有答案