【发布时间】:2020-07-27 09:55:00
【问题描述】:
我的应用程序有一个包含多个条目的可扩展列表。我想通过单击最低级别的 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);
}
}
目的地的路线名称在列表中给出:
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>[]]);
}
提前谢谢你。
【问题讨论】:
标签: flutter