Flutter FutureBuilder点击列表项目提取索引号

4uqofj5v  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(137)

我需要提取FutureBuilder列表项索引来编辑另一个屏幕MyForm上的列表项。
在下面的代码中,快照有数据,我创建了列表。
当我点击一个列表项时,我将转到MyForm屏幕来编辑列表项。
问题:我需要知道我点击的列表项的索引号。
在MyForm屏幕上,我想使用相同的索引号更新列表项。
请告知如何提取列表索引号。

Widget jlist = SizedBox(width: 800, height: 500, child: FutureBuilder<List<Job>?>(future: readAllItems(),builder: (BuildContext context, AsyncSnapshot<List<Job>?> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        return const CircularProgressIndicator();
      } else if (snapshot.hasError) {
        return ListView.separated(shrinkWrap: true,itemCount: MyFormState.jobs.length,itemBuilder: (BuildContext context, int index) {
          return Container(height: 100, child: SingleChildScrollView(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.min,children: <Widget>[Text('')],)));
    },separatorBuilder: (BuildContext context,int index) => const Divider());
      } else if (snapshot.hasData) {
          List<Job> items = snapshot.data!;
          return ListView.separated(shrinkWrap: true,itemCount: items.length,itemBuilder: (BuildContext context, int index) {
          return Container(height: 100, child: SingleChildScrollView(child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.min,children: <Widget>[
                ListTile(title: Text(items[index].Description,style: TextStyle(fontSize: 11)),style: TextStyle(fontSize: 11)),onTap:() {
        
          //How do I extract the list index number to use on MyForm screen?
                
         MyFormState.myNote.text = items[index].Description;
         Navigator.push(context, MaterialPageRoute(builder: (context) => MyForm()));
         })])));
        },separatorBuilder: (BuildContext context,int index) => const Divider());
        }
      else {
        return const Text('No data available');
      }
    }));

谢谢你

vc6uscn9

vc6uscn91#

您可以将索引值作为参数传递给下一个视图,在您的情况下是MyForm屏幕,如下所示:

Navigator.of(context).push(
                      MaterialPageRoute(
                        builder: (context) => MyForm(
                          index: index,
                        ),
                      ),
                    );

这就是如何从下一个视图MyForm中检索它
这就是你的构造函数应该是这样的

const MyForm({
super.key,
required this.index, });

这是你如何调用你想在代码中使用的索引:

widget.index,// call depends on what you're going to do with this passed value

我希望这能解决你的问题

相关问题