不在颤抖中创建列表

时间:2020-03-13 17:17:53

标签: list flutter dart

这是我的意思:我有两页。第一页有一个textFormField,它的值是我发送到第二个屏幕的。在第二个屏幕中,我想创建一个从第一页收到的内容的列表。但是问题在于该列表从未创建。它仅显示最后收到的元素。

import 'package:flutter/material.dart';

class PageTwo extends StatefulWidget {
  final String descricao;
  const PageTwo({Key key, this.descricao}) : super(key: key);

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

class _PageTwoState extends State<PageTwo> {
  final List<String> listDescricao = [];

  @override
  void initState() {
    listDescricao.add(widget.descricao);
    super.initState();
  }

  //List images items
  Widget imgListItem() {
    return ListView.builder(
        itemCount: listDescricao.length,
        itemBuilder: (BuildContext context, int index) {
          return widget.descricao == null
              ? Container()
              : Text(listDescricao[index]);
        });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: imgListItem(),
    );
  }
}

根据需要,这是第1页

    import 'package:flutter/material.dart';

class PageOne extends StatefulWidget {
  @override
  _PageOneState createState() => _PageOneState();
}

class _PageOneState extends State<PageOne> {
  final GlobalKey<ScaffoldState> _scaffoldkey = new GlobalKey<ScaffoldState>();
  final inputDescricaoController = TextEditingController();

  //send image
  doSend() async {
    String descricao = inputDescricaoController.text ??= "";

    Navigator.of(context).pushAndRemoveUntil(
        MaterialPageRoute(
            builder: (BuildContext context) => PageTwo(descricao: descricao)),
        (Route<dynamic> route) => false);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: RaisedButton(
        child: Column(
          children: <Widget>[
            TextField(
                controller: inputDescricaoController,
            ),
            Text(
              'send',
            ),
          ],
        ),
        onPressed: () async {
          doSend();
        },
      ),
    );
  }
}

0 个答案:

没有答案