Flutter - 如何将元素移动到列表末尾?

Arn*_*nav 6 dart flutter

我有一个在 Flutter 中ListView显示 a 的东西List。我希望该元素移动到列表的末尾并将onTap()其显示在我的列表中?我怎么做?

代码:

List<String> list = ["A", "B", "C", "D", "E", "F"];

void main() {
  return runApp(
    MaterialApp(
      title: 'Flutter New AppDemo',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: ListView(children: [
            listItem(list[1]),
            divider,
            listItem(list[2]),
            divider,
            listItem(list[3]),
            divider,
            listItem(list[4]),
            divider,
            listItem(list[5]),
            divider,
            listItem(list[0])
          ]),
        ),
      ),
    ),
  );
}

Widget divider = Container(height: 1, color: Colors.black);

Widget listItem(String text) {
  return Container(
    height: 100,
    padding: EdgeInsets.only(left: 16),
    child: Align(
      alignment: Alignment.centerLeft,
      child: Text(text),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

示例:我想将元素“A”移动到List. 在此输入图像描述

在此输入图像描述

小智 6

您可以对代码进行一些修改来实现此目的:

将列表中元素的索引发送到 listItem 小部件,而不是字符串本身。将 listItem 小部件包装在可以记录 onTap 的手势检测器中。

Widget listItem(int index) {
  return GestureDetector(
    onTap: () {
      final String first = list.removeAt(index);
      list.add(first);
    },
    child: Container(
      height: 100,
      padding: EdgeInsets.only(left: 16),
      child: Align(
        alignment: Alignment.centerLeft,
        child: Text(list[index]),
      ),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)

  • 除了 Adrian-Paul 的代码之外,如果您希望更改(新列表内容)立即可见,您需要在父窗口小部件上调用“setState”,以便重绘 (2认同)

Pan*_*iss 6

onTap: () {
   setState((){
       final String first = list.removeAt(0);
       list.add(first);
   });
}
Run Code Online (Sandbox Code Playgroud)

onTap可以是一个按钮,或者您可以使用它GestureDetector代替