如何在颤振中将数据从 TextFormField 传递到 List?

用户 6683331

我有以下工作代码:

class Submit extends StatefulWidget {
  @override
  _SubmitState createState() => new _SubmitState();
}

class _SubmitState extends State<Submit> {
  final scaffoldKey = new GlobalKey<ScaffoldState>();
  final formKey = new GlobalKey<FormState>();
  final myController = new TextEditingController();
  double _w;

  @override
  void dispose() {
    // Clean up the controller when the Widget is removed from the Widget tree
    myController.dispose();
    super.dispose();
  }

  void _submit() {
    final form = formKey.currentState;

    if (form.validate()) {
      form.save();
      _performSubmit();
    }
  }

  void _performSubmit() {

    final double data = double.parse(myController.text)*(2);
    var route = new MaterialPageRoute(builder: (BuildContext context) =>
    new NextPage(w1: data.toStringAsFixed(3)),
    );

    Navigator.of(context).push(route);
  }

  @override
  Widget build(BuildContext context) {

    void _restart() {
      Navigator.of(context).push(new MaterialPageRoute(
          builder: (BuildContext context) => new HomePage()));
    }

    return new Scaffold(
      key: scaffoldKey,
      appBar: new AppBar(
        actions: <Widget>[
        ],
        title: new Text('Next Page'),
      ),
      body:  new Form(
          key: formKey,
          child: new Column(
            children: [
              new TextFormField(
                controller: myController,
                keyboardType: TextInputType.numberWithOptions(decimal: true),
                onSaved: (val) => _w = double.parse(val),
              ),
              new RaisedButton(
                onPressed: _submit,
                child: new Text(
                  'Next Page',
                ),
              )
            ],
          ),
        ),
    );
  }
}



class NextPage extends StatefulWidget {

  final String w1;

  NextPage({Key key, this.w1}) : super (key: key);

  @override
  _NextPageState createState() => _NextPageState();
}


class _NextPageState extends State<NextPage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
          title: new Text("Second page")
      ),
      body: new Text("${widget.w1}")
    );
  }
}

在这里,我传递了一个乘以 2 的变量(称为w1),然后在下一个屏幕 ( NextScreen) 上使用Text. 但是我想要一个 List 上的结果,它是在我接下来展示的其他类中定义的。我想显示w1文本所在的变量的值1.1(内部List<Entry>)。接下来我有完整的代码,但我不知道如何传递变量。如果我写new Entry('${widget.w1}',),我得到undefined name widget

我怎么能把我的变量传递给那个列表?

class Submit extends StatefulWidget {
  @override
  _SubmitState createState() => new _SubmitState();
}

class _SubmitState extends State<Submit> {
  final scaffoldKey = new GlobalKey<ScaffoldState>();
  final formKey = new GlobalKey<FormState>();
  final myController = new TextEditingController();
  double _w;

  @override
  void dispose() {
    // Clean up the controller when the Widget is removed from the Widget tree
    myController.dispose();
    super.dispose();
  }

  void _submit() {
    final form = formKey.currentState;

    if (form.validate()) {
      form.save();
      _performSubmit();
    }
  }

  void _performSubmit() {

    final double data = double.parse(myController.text)*(2);
    var route = new MaterialPageRoute(builder: (BuildContext context) =>
    new NextPage(w1: data.toStringAsFixed(3)),
    );

    Navigator.of(context).push(route);
  }

  @override
  Widget build(BuildContext context) {

    void _restart() {
      Navigator.of(context).push(new MaterialPageRoute(
          builder: (BuildContext context) => new HomePage()));
    }

    return new Scaffold(
      key: scaffoldKey,
      appBar: new AppBar(
        actions: <Widget>[
        ],
        title: new Text('Next Page'),
      ),
      body:  new Form(
          key: formKey,
          child: new Column(
            children: [
              new TextFormField(
                controller: myController,
                keyboardType: TextInputType.numberWithOptions(decimal: true),
                onSaved: (val) => _w = double.parse(val),
              ),
              new RaisedButton(
                onPressed: _submit,
                child: new Text(
                  'Next Page',
                ),
              )
            ],
          ),
        ),
    );
  }
}



class NextPage extends StatefulWidget {

  final String w1;

  NextPage({Key key, this.w1}) : super (key: key);

  @override
  _NextPageState createState() => _NextPageState();
}


class _NextPageState extends State<NextPage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: new AppBar(
          title: new Text("Second page")
      ),
      body: new ListView.builder(
        itemBuilder: (BuildContext context, int index) =>
        new EntryItem(data[index]),
        itemCount: data.length,
      ),
    );
  }
}


// One entry in the multilevel list displayed by this app.
class Entry {
  Entry(this.title, [this.children = const <Entry>[]]);

  final String title;
  final List<Entry> children;
}

// The entire multilevel list displayed by this app.

List<Entry> data = <Entry>[
  new Entry(
    'First',
    <Entry>[
      new Entry(
        '1.1',
      ),
    ],
  ),
];

// Displays one Entry. If the entry has children then it's displayed
// with an ExpansionTile.
class EntryItem extends StatelessWidget {
  const EntryItem(this.entry);

  final Entry entry;

  Widget _buildTiles(Entry root) {
    if (root.children.isEmpty)
      return new ListTile(
          title: new Text(root.title));

    return new ExpansionTile(
      key: new PageStorageKey<Entry>(root),
      title: new Text(root.title,),
      children: root.children.map(_buildTiles).toList(),
    );
  }

  @override
  Widget build(BuildContext context) {
    return _buildTiles(entry);
  }
}
维诺特·库马尔

试试这个,

class Submit extends StatefulWidget {
  @override
  _SubmitState createState() => new _SubmitState();
}

class _SubmitState extends State<Submit> {
  final scaffoldKey = new GlobalKey<ScaffoldState>();
  final formKey = new GlobalKey<FormState>();
  final myController = new TextEditingController();
  double _w;

  @override
  void dispose() {
    // Clean up the controller when the Widget is removed from the Widget tree
    myController.dispose();
    super.dispose();
  }

  void _submit() {
    final form = formKey.currentState;

    if (form.validate()) {
      form.save();
      _performSubmit();
    }
  }

  void _performSubmit() {
    final double data = double.parse(myController.text) * (2);
    var route = new MaterialPageRoute(
      builder: (BuildContext context) => new NextPage(
            w1: new Entry(
              'First',
              <Entry>[new Entry('$data')],
            ),
          ),
    );

    Navigator.of(context).push(route);
  }

  @override
  Widget build(BuildContext context) {
    void _restart() {
//      Navigator.of(context).push(new MaterialPageRoute(
//          builder: (BuildContext context) => new HomePage()));
    }

    return new Scaffold(
      key: scaffoldKey,
      appBar: new AppBar(
        actions: <Widget>[],
        title: new Text('Next Page'),
      ),
      body: new Form(
        key: formKey,
        child: new Column(
          children: [
            new TextFormField(
              controller: myController,
              keyboardType: TextInputType.numberWithOptions(decimal: true),
              onSaved: (val) => _w = double.parse(val),
            ),
            new RaisedButton(
              onPressed: _submit,
              child: new Text(
                'Next Page',
              ),
            )
          ],
        ),
      ),
    );
  }
}

class NextPage extends StatefulWidget {
  final Entry w1;

  NextPage({Key key, this.w1}) : super(key: key);

  @override
  _NextPageState createState() => _NextPageState();
}

class _NextPageState extends State<NextPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: new AppBar(title: new Text("Second page")),
        body: new EntryItem(widget.w1),
    );
  }
}

class Entry {
  Entry(this.title, [this.children = const <Entry>[]]);

  final String title;
  final List<Entry> children;
}

class EntryItem extends StatelessWidget {
  const EntryItem(this.entry);

  final Entry entry;

  Widget _buildTiles(Entry root) {
    if (root.children.isEmpty)
      return new ListTile(
          title: new Text(root.title));

    return new ExpansionTile(
      key: new PageStorageKey<Entry>(root),
      title: new Text(root.title,),
      children: root.children.map(_buildTiles).toList(),
    );
  }

  @override
  Widget build(BuildContext context) {
    return _buildTiles(entry);
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在颤振中将函数作为参数传递

来自分类Dev

颤振TextFormField验证显示对齐错误

来自分类Dev

如何在振颤中从List <int>再现音频?

来自分类Dev

如何从JSON传递List <dynamic>到List <MyModel>?

来自分类Dev

如何获取 TextFormField 的高度

来自分类Dev

如何在Sapper中将数据从布局传递到页面?

来自分类Dev

如何在ReactJS中将数据从元素传递到动作?

来自分类Dev

如何在 Bot Framework 中将数据从 RootDialog 传递到 LuisDialog

来自分类Dev

如何在函数调用中使用“ list2env()”(或通过管道传递到“ assign()”)?

来自分类Dev

如何在Flutter中从TextFormField更新变量?

来自分类Dev

如何在ASP.NET MVC中将数据传递到数据库?

来自分类Dev

使用 ViewBag 将通用 List<T> 数据从控制器传递到视图

来自分类Dev

ASP.NET Core如何将List <int>从视图传递到Controller

来自分类Dev

如何将数组从php sql传递到android list view?

来自分类Dev

如何使用JNA将List <T>从Java传递到C ++ std :: vector函数参数

来自分类Dev

如何将 List<int> 从 C# 传递到 C++ CLi?

来自分类Dev

如何在RiotJS中将变量传递到类,ID或数据属性中?

来自分类Dev

如何在循环中将多个变量传递到ajax json数据中。

来自分类Dev

AngularJS:如何在angularjs中将数据从视图传递到控制器

来自分类Dev

如何在Codeigniter中将数据从控制器传递到jquery(Ajax)

来自分类Dev

如何在Android中将数据从Cordova插件传递到index.html

来自分类Dev

如何在Angular JS中将数据从工厂传递到控制器?

来自分类Dev

如何在点击事件中将数据传递到AngularJS中的模式中

来自分类Dev

如何在angular js中将数据从一页传递到另一页

来自分类Dev

如何在SwiftUI中将顺序数据传递到NavigationBarTitle

来自分类Dev

如何在html中将数据从一页传递到另一页?

来自分类Dev

如何在React中将数据传递到Chart.js图表

来自分类Dev

如何在React Native中将函数和数据从组件类传递到无状态类?

来自分类Dev

如何在Laravel中将数据从私有功能传递到公共功能?

Related 相关文章

  1. 1

    如何在颤振中将函数作为参数传递

  2. 2

    颤振TextFormField验证显示对齐错误

  3. 3

    如何在振颤中从List <int>再现音频?

  4. 4

    如何从JSON传递List <dynamic>到List <MyModel>?

  5. 5

    如何获取 TextFormField 的高度

  6. 6

    如何在Sapper中将数据从布局传递到页面?

  7. 7

    如何在ReactJS中将数据从元素传递到动作?

  8. 8

    如何在 Bot Framework 中将数据从 RootDialog 传递到 LuisDialog

  9. 9

    如何在函数调用中使用“ list2env()”(或通过管道传递到“ assign()”)?

  10. 10

    如何在Flutter中从TextFormField更新变量?

  11. 11

    如何在ASP.NET MVC中将数据传递到数据库?

  12. 12

    使用 ViewBag 将通用 List<T> 数据从控制器传递到视图

  13. 13

    ASP.NET Core如何将List <int>从视图传递到Controller

  14. 14

    如何将数组从php sql传递到android list view?

  15. 15

    如何使用JNA将List <T>从Java传递到C ++ std :: vector函数参数

  16. 16

    如何将 List<int> 从 C# 传递到 C++ CLi?

  17. 17

    如何在RiotJS中将变量传递到类,ID或数据属性中?

  18. 18

    如何在循环中将多个变量传递到ajax json数据中。

  19. 19

    AngularJS:如何在angularjs中将数据从视图传递到控制器

  20. 20

    如何在Codeigniter中将数据从控制器传递到jquery(Ajax)

  21. 21

    如何在Android中将数据从Cordova插件传递到index.html

  22. 22

    如何在Angular JS中将数据从工厂传递到控制器?

  23. 23

    如何在点击事件中将数据传递到AngularJS中的模式中

  24. 24

    如何在angular js中将数据从一页传递到另一页

  25. 25

    如何在SwiftUI中将顺序数据传递到NavigationBarTitle

  26. 26

    如何在html中将数据从一页传递到另一页?

  27. 27

    如何在React中将数据传递到Chart.js图表

  28. 28

    如何在React Native中将函数和数据从组件类传递到无状态类?

  29. 29

    如何在Laravel中将数据从私有功能传递到公共功能?

热门标签

归档