Flutter 如何将Onpressed函数添加到列表的每个值

Flutter 如何将Onpressed函数添加到列表的每个值,flutter,Flutter,我很难将列表中的一个项目导航到新的.dart文件,这是我的主页,我导入了第二个文件 class Home extends StatefulWidget { @override _HomeState createState() => new _HomeState(); } class _HomeState extends State<Home> { final List<String>listof=["Decimal Numbers","Binary

我很难将列表中的一个项目导航到新的.dart文件,这是我的主页,我导入了第二个文件

class Home extends StatefulWidget {
  @override
  _HomeState createState() => new _HomeState();
}

class _HomeState extends State<Home> {

  final List<String>listof=["Decimal Numbers","Binary Numbers","Decimal-to-Binary Conversion","Binary Arithmetic","Complements of Binary Numbers","Signed Numbers","Arithmetic Operations with Signed Numbers","Hexadecimal Numbers","Octal Numbers","Binary Coded Decimal (BCD)"];



    @override
      Widget build(BuildContext context) {
        return new Scaffold(
           appBar: new AppBar(
             title: new Text(
               "Computer System Theory",
               style:  new TextStyle(fontSize: 19.0),
             ), 
             backgroundColor: Colors.deepPurple,

          actions: <Widget>[
            new IconButton(
              icon: new Icon(Icons.search),
              onPressed: ()=>debugPrint("Search"),
             ),
          ],

       ),
       body: new Container(
        child: new ListView.builder(

         itemBuilder: (_, int index)=>listDataItem(this.listof[index],),
         itemCount: this.listof.length,


       ),
       ),       
    );
  }
}

    class listDataItem extends StatelessWidget{

      String itemName;
      listDataItem(this.itemName);

      @override
      Widget build(BuildContext context){
        return new Card(

          elevation: 7.0,

          child: new Container(

            margin: EdgeInsets.all(5.0),
            padding: EdgeInsets.all(6.0),

            child: new Row(
              children: <Widget> [

                new CircleAvatar(
                  child: new Text(itemName[0]),

                  backgroundColor: Colors.deepPurple,
                  foregroundColor: Colors.white,

                ),
                new Padding(padding: EdgeInsets.all(8.0)),
                new Text(itemName,style: TextStyle(fontSize: 18.0)),

              ],
            ),
        ),); 
      }

    }
class Home扩展StatefulWidget{
@凌驾
_HomeState createState()=>new_HomeState();
}
类(HomeState扩展状态){
最终列表=[“十进制数”、“二进制数”、“十进制到二进制转换”、“二进制算术”、“二进制数补码”、“有符号数”、“有符号数算术运算”、“十六进制数”、“八进制数”、“二进制编码十进制(BCD)”];
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(
“计算机系统理论”,
样式:新文本样式(fontSize:19.0),
), 
背景颜色:颜色。深紫色,
行动:[
新图标按钮(
图标:新图标(Icons.search),
按下时:()=>debugPrint(“搜索”),
),
],
),
主体:新容器(
子项:新建ListView.builder(
itemBuilder:(_,int index)=>listDataItem(this.listof[index],),
itemCount:this.listof.length,
),
),       
);
}
}
类listDataItem扩展了无状态小部件{
字符串itemName;
listDataItem(此.itemName);
@凌驾
小部件构建(构建上下文){
归还新卡(
标高:7.0,
子容器:新容器(
边距:所有边缘集(5.0),
填充:所有边缘设置(6.0),
孩子:新的一排(
儿童:[
新圆星(
子项:新文本(itemName[0]),
背景颜色:颜色。深紫色,
前底色:颜色。白色,
),
新填充(填充:EdgeInsets.all(8.0)),
新文本(itemName,样式:TextStyle(fontSize:18.0)),
],
),
),); 
}
}
我尝试过这种方法,但我不知道如何将onpress函数添加到列表中的iten中,如果我单击列表中的任何值,我将进入尊敬的页面,例如binary.dart

这是我的二进制代码

import 'package:flutter/material.dart';

class Binary extends StatefulWidget {
  @override
  _BinaryState createState() => _BinaryState();
}

class _BinaryState extends State<Binary> {
  @override
  Widget build(BuildContext context) {
    double cWidth = MediaQuery.of(context).size.width*0.8;
    return new Container (
      padding: const EdgeInsets.all(16.0),
      width: cWidth,
      child: new Column (
        children: <Widget>[
          new Text ("Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 Long text 1 ", textAlign: TextAlign.left),
          new Text ("Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2, Long Text 2", textAlign: TextAlign.left),
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
类二进制扩展StatefulWidget{
@凌驾
_BinaryState createState();
}
类_BinaryState扩展了状态{
@凌驾
小部件构建(构建上下文){
double cWidth=MediaQuery.of(context).size.width*0.8;
退回新货柜(
填充:常数边集全部(16.0),
宽度:cWidth,
子:新列(
儿童:[
新文本(“长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1长文本1”,textAlign:textAlign.left),
新文本(“长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2、长文本2”,textAlign:textAlign.left),
],
),
);
}
}

您可以使用
InkWell
GestureDetector
包装列表项

示例:在您的
listDataItem
类的
build
方法中,您将返回一张

用墨水瓶把它包起来

InkWell(
  onTap: () {
    print('inkwell');
  },
  child: Card(...

我确实在这里演示了代码,希望对您有所帮助

class listDataItem extends StatelessWidget{

      final String itemName;
      listDataItem(this.itemName);

      @override
      Widget build(BuildContext context){
        return InkWell(
        onTap: () {
        },
        child : Card(

          elevation: 7.0,

          child: new Container(

            margin: EdgeInsets.all(5.0),
            padding: EdgeInsets.all(6.0),

            child: new Row(
              children: <Widget> [

                new CircleAvatar(
                  child: new Text(itemName[0]),

                  backgroundColor: Colors.deepPurple,
                  foregroundColor: Colors.white,

                ),
                new Padding(padding: EdgeInsets.all(8.0)),
                new Text(itemName,style: TextStyle(fontSize: 18.0)),

              ],
            ),
        ),),
        ); 
    }

}

class listDataItem扩展了无状态小部件{
最终字符串itemName;
listDataItem(此.itemName);
@凌驾
小部件构建(构建上下文){
回墨槽(
onTap:(){
},
孩子:卡片(
标高:7.0,
子容器:新容器(
边距:所有边缘集(5.0),
填充:所有边缘设置(6.0),
孩子:新的一排(
儿童:[
新圆星(
子项:新文本(itemName[0]),
背景颜色:颜色。深紫色,
前底色:颜色。白色,
),
新填充(填充:EdgeInsets.all(8.0)),
新文本(itemName,样式:TextStyle(fontSize:18.0)),
],
),
),),
); 
}
}

使用墨水池或手势检测器