【问题标题】:How to change AppBar content using children widget?如何使用子小部件更改 AppBar 内容?
【发布时间】:2018-11-19 12:18:12
【问题描述】:

我正在尝试将 AppBar 标题从 LoginWidget 级别更改为“登录”,但我不知道该怎么做。

它可能看起来像 IoC 模式,但我认为它应该仍然可以做到。

我现在正在尝试扩展一个 Scaffold 对象并为其添加一些方法,但它似乎不起作用。

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
            backgroundColor: Colors.amber,
            title: new Text("Application name")
        ),
        body: new LoginWidget()
      )
    );
  }
}

【问题讨论】:

    标签: widget flutter appbar


    【解决方案1】:

    这是不可能的

    小部件不能以任何方式修改其他小部件。他们唯一能做的就是提交事件让他们可能做出反应。

    只有MyApp 可以更改应用栏。

    【讨论】:

    • 虽然我喜欢有些事情是不可能的(只要有替代解决方案),但孩子们不能设置其父级的状态来重建应用栏吗?我对 Flutter 还是很陌生,也许我错过了一些关于状态目的的东西。我喜欢 Inverse of Control 模式,但如果我不能在 Flutter 中使用它来制作 UI,那意味着我将制作很多新的 Scaffolds
    • 这不是你应该设计颤振小部件的方式。如果您想要这样的行为,请创建一个 LoginView,它使用自定义应用栏和 LoginWidget 实例化 Scaffold 作为其内容。
    • 附加信息:Flutter 以组合为核心。如果您处于需要多次编写相同内容的情况;考虑创建一个自定义小部件来完成该部分。
    • 我认为使用 InheritedWidget 是可能的
    • InheritedWidget 正好相反。这是为了 MyApp 将数据传递给它的孩子。
    猜你喜欢
    • 2020-01-02
    • 2021-12-27
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2021-02-11
    • 2019-09-14
    相关资源
    最近更新 更多