我的应用获得了包含多个条目的可扩展列表。我想通过单击最低级别的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>[]]);
}
谢谢。
答案 0 :(得分:0)
您要将template<typename T>
struct Vector2
{
public:
...
};
传递给template<typename S>
Vector2(const Vector3<S> & inVec3);
:
template <typename T>
template <typename S>
inline Vector2<T>::Vector2(const Vector3<S> & inVec3) :
X(static_cast<T>(inVec3.X)),
Y(static_cast<T>(inVec3.Y))
{}