我正在try 构建我的第一个Ffltter应用程序,在将数据传递到无状态窗口小部件时遇到了困难.我有以下课程:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'App Title',
      theme: new ThemeData(
        primarySwatch: Colors.green,
      ),
      home: new MainBody(),
    );
  }
}


class MainBody extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Padding(
        padding: const EdgeInsets.only(left: 20.0, right: 20.0),
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new TimeCheck(),
          ],
        ),
      ),
    );
  }
}

TimeCheckStateful Widget.基本上,我希望能够在开始时设置一些值,然后通过MainBody将它们传递到TimeCheck.我读到的每一篇文章都展示了如何将数据传递到Stateful Widgets,但有可能通过Stateless Widget传递数据吗?

我认识到我可能采取了错误的方法,所以如果有帮助,我最终想要做的是有一个"设置"页面,用户可以在其中设置数据的值(字符串和一些数字),然后这些值被传递到TimeCheck,在那里它们被用来生成显示.

如果可能的话,我还希望能够保存用户设置的值,这样他们就不必每次都输入它们,然后我希望能够在实例化TimeCheck时读取它们.

推荐答案

是的,您只需将信息传递给构造函数就可以做到这一点.大概是这样的:

 class MyApp extends StatelessWidget {
  MyApp(this.yourData);

  final int yourData;
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'App Title',
      theme: new ThemeData(
        primarySwatch: Colors.green,
      ),
      home: new MainBody(yourData),
    );
  }
}


class MainBody extends StatelessWidget {
  MainBody(this.yourData);

  final int yourData;

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Padding(
        padding: const EdgeInsets.only(left: 20.0, right: 20.0),
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new TimeCheck(yourData),
          ],
        ),
      ),
    );
  }
}

Flutter相关问答推荐

我如何才能收到每天重复的预定通知?

在Flutter 中创建自定义Snackbar类

我有一个问题:类型';()=>;Null';不是类型转换中类型';(Int)=>;void';的子类型

Firebase动态链接已弃用,不应在新项目中使用.Flutter 替代方案

Flutter Android Google Sign-in error:ApiException:10在确认软件包名称、SHA-1 fingerprint 和设置同意页面后出现异常

当我转到其他屏幕并按下后退按钮时,屏幕将不会刷新

StateNotifer正在riverpod中提供初始状态值(bool)

如何在点击查看措辞下方添加句子?

SliverAppbar 呈蓝色

如何从flutter中不同类别的列表中获取所有产品

Flutter 包错误:此应用程序使用的是已弃用的 Android 嵌入版本

在Flutter中为容器实现线性渐变背景动画

Agora VideoCall 不显示远程视频网格

如何更改中心的圆形进度指示器

Riverpod 在使用冻结副本更新状态时触发重建,即使没有任何更改

在 Android 12+ 中,REST API 调用在 flutter 中非常慢,在 WiFi 中需要 10 秒,而在移动数据中不到一秒

如何在 SingleChildScrollView 小部件中管理自定义小部件状态

如何将变量翻译成其他语言

更新未知文档 ID firebase\flutter 中的字段

Flutter ListView builder 未使用新数据更新