从ListTile导航到另一个页面

时间:2020-04-14 15:39:35

标签: flutter

我的应用获得了包含多个条目的可扩展列表。我想通过单击最低级别的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>[]]);
}

谢谢。

1 个答案:

答案 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))
{}