从Listview.builder获取值,然后在另一个statefeul小部件上提交该值?扑

时间:2020-02-02 17:32:11

标签: listview flutter

您好,我想问一个问题,如何编码一个函数,该函数将从listview.builder中获取值,然后将其转发到第二个屏幕,

示例

从下面的图片, 例如,“选定项目2”,那么在底部应该有一个按钮,显示“提交”,在下一个屏幕上,应该在屏幕中间说出该项目? 且应仅是一项,而不是多项选择,

请帮我,抓挠我的头,我理解下拉代码如何使用setstate起作用,但我无法理解它可以在listview.builder上起作用

screenshot

2 个答案:

答案 0 :(得分:1)

您需要在下一个视图中看到该值:

class SecondView extends StatefulWidget {
  final String value;

  SecondView({this.value});

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

class _SecondViewState extends State<SecondView> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(widget.value),
    );
  }
}

并在上一个视图中发送:

void moveToNextView(String name){
  Navigator.of(context).push(MaterialPageRoute(
    builder: (context) {
      return SecondView(value: name);
    }
  ));
}

答案 1 :(得分:1)

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return Container(
        color: Colors.white,
        child: ListView.builder(
            shrinkWrap: true,
            itemCount: 15,
            itemBuilder: (con, ind) {
              return ListTile(
                  title:
                      Text('Item $ind', style: TextStyle(color: Colors.black)),
                  onTap: () {
                    Navigator.push(
                        con,
                        MaterialPageRoute(
                            builder: (cc) => OtherScreen(value: 'Item $ind')));
                  });
            }));
  }
}

class OtherScreen extends StatefulWidget {
  //add your custom data
  final String value;

  OtherScreen({Key k, @required this.value}) : super(key: k);

  @override
  _OtherState createState() => _OtherState(value);
}

class _OtherState extends State<OtherScreen> {
  _OtherState(this.data);

  String data;

  @override
  Widget build(BuildContext context) {
    return Container(
        alignment: Alignment.center,
        color: Colors.white,
        child: Text(data, style: TextStyle(color: Colors.black)));
  }
}