Flutter 从ListTile导航到另一个页面

Flutter 从ListTile导航到另一个页面,flutter,Flutter,我的应用程序得到了一个包含多个条目的可扩展列表。我想通过单击最低级别的ListTiles导航到不同的页面。我知道有“onTap”方法,但它需要一个buildContext,我没有编程的方式。 我从网上得到了代码,并对其进行了一些修改。代码如下: import 'package:flutter/material.dart'; import '../screens/model_view_screen.dart'; import '../models/entry.dart'; class Entry

我的应用程序得到了一个包含多个条目的可扩展列表。我想通过单击最低级别的ListTiles导航到不同的页面。我知道有“onTap”方法,但它需要一个buildContext,我没有编程的方式。 我从网上得到了代码,并对其进行了一些修改。代码如下:

import 'package:flutter/material.dart';
import '../screens/model_view_screen.dart';
import '../models/entry.dart';

class EntryItem extends StatelessWidget {
  const EntryItem(this.entry);
  final Entry entry;

  Widget _buildTiles(Entry root) {
    if (root.children.isEmpty) {
      return Padding(
        padding: const EdgeInsets.all(10.0),
        child: Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(15),
            border: Border.all(
              width: 2,
              color: Color.fromRGBO(3, 120, 163, 1),
            ),
          ),
          child: ListTile(
            leading: Image.asset(root.imageUrl),
            title: Text(root.title),
            onTap: () {},
          ),
        ),
      );
    }
    return Padding(
      padding: const EdgeInsets.all(10.0),
      child: Container(
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(15),
          border: Border.all(
            width: 3,
            color: Color.fromRGBO(3, 120, 163, 1),
          ),
        ),
        child: ExpansionTile(
          key: PageStorageKey<Entry>(root),
          leading: Image.asset(root.imageUrl),
          title: Text(root.title, style: TextStyle(color: Colors.black)),
          children: root.children.map<Widget>(_buildTiles).toList(),
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return _buildTiles(entry);
  }
}
导入“包装:颤振/材料.省道”;
导入“../screens/model_view_screen.dart”;
导入“../models/entry.dart”;
类EntryItem扩展了无状态小部件{
const EntryItem(此项);
最终入围;
Widget\u buildTiles(条目根){
if(root.children.isEmpty){
返回填充(
填充:常数边集全部(10.0),
子:容器(
装饰:盒子装饰(
边界半径:边界半径。圆形(15),
边界:边界(
宽度:2,
颜色:颜色。来自RGBO(3,120,163,1),
),
),
孩子:ListTile(
前导:Image.asset(root.imageUrl),
标题:文本(root.title),
onTap:(){},
),
),
);
}
返回填充(
填充:常数边集全部(10.0),
子:容器(
装饰:盒子装饰(
边界半径:边界半径。圆形(15),
边界:边界(
宽度:3,
颜色:颜色。来自RGBO(3,120,163,1),
),
),
子文件:扩展文件(
密钥:PageStorageKey(根),
前导:Image.asset(root.imageUrl),
标题:文本(root.title,style:TextStyle(颜色:Colors.black)),
children:root.children.map(_buildTiles.toList(),
),
),
);
}
@凌驾
小部件构建(构建上下文){
返回(条目);;
}
}
目标的routeName在列表中给出:

class Entry{
  final String title;
  final String imageUrl;
  final String routeName;
  final List<Entry> children;

  Entry(this.title, this.imageUrl, this.routeName, [this.children = const <Entry>[]]);
}
类条目{
最后的字符串标题;
最终字符串imageUrl;
最终字符串routeName;
最后儿童名单;
条目(this.title、this.imageUrl、this.routeName、[this.children=const[]);
}

提前谢谢。

您想将
BuildContext
传递给
\u buildTiles

Widget\u buildTiles(BuildContext上下文,条目根){
....
孩子:ListTile(
前导:Image.asset(root.imageUrl),
标题:文本(root.title),
onTap:()=>Navigator.of(context.pushName)(root.routeName),
),
....
children:root.children.map((e)=>\u buildTiles(context,e)).toList(),
....
@凌驾
小部件构建(构建上下文){
返回_buildTiles(上下文、条目);
}

您想将
BuildContext
传递给
\u buildTiles

Widget\u buildTiles(BuildContext上下文,条目根){
....
孩子:ListTile(
前导:Image.asset(root.imageUrl),
标题:文本(root.title),
onTap:()=>Navigator.of(context.pushName)(root.routeName),
),
....
children:root.children.map((e)=>\u buildTiles(context,e)).toList(),
....
@凌驾
小部件构建(构建上下文){
返回_buildTiles(上下文、条目);
}

我已经尝试了该解决方案,但当我这样做时,我得到了以下错误:“参数类型”Widget Function(BuildContext,Entry)“无法分配给参数类型”Widget Function(Entry)”.dart(参数类型不可分配)“eroor标记在此行的“\u buildTiles”:children:root.children.map(\u buildTiles.toList(),我已经尝试过该解决方案,但当我这样做时,我得到以下错误:“参数类型”Widget Function(BuildContext,Entry)“无法分配给参数类型”Widget Function(Entry)”.dart(参数类型\u not \u assignable)“eror标记在此行的“\u buildTiles”:children:root.children.map(\u buildTiles.toList(),