【发布时间】:2020-05-01 09:32:35
【问题描述】:
// 这是点击的水平列表视图页面,然后需要类别转到自己的页面。当单击一个类别时,它会在登陆主屏幕之前显示所有类别的所有页面。我怎样才能阻止这种情况发生。
import 'package:flutter/material.dart';
class HorizontalList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 100.0,
child: ListView(
scrollDirection: Axis.horizontal,
children: <Widget>[
// containers for categories
Category(
image_location: 'lib/images/supreme_airmax_white.jpg',
image_caption: 'shoes',
),
Category(
image_location: 'lib/images/cats/offwhite_belt_blackandyellow_accessories.jpg',
image_caption: 'accessories',
),
],
),
);
}
}
class Category extends StatelessWidget {
final String image_location;
final String image_caption;
Category({this.image_location, this.image_caption});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(2.0),
child: InkWell(
onTap: (){
//pages for categories
Category();Navigator.of(context).pushNamed('/screen5');
Category();Navigator.of(context).pushNamed('/screen6');
},
【问题讨论】:
-
您到底想在
onTap中实现什么?您正在创建一个新的 Category 对象并多次推送/screenX? -
点击我希望容器打开一个新页面。他们都是独立的
-
没有必要在你的
onTap中创建一个新的Category对象,删除它。只保留一个Navigator推送。另外,我建议您将屏幕重命名为标题字符串,这样您就可以使用Navigator.of(context).pushNamed(image_caption)。或者,您可以使用 if 语句来决定要转到哪个页面等。 -
谢谢,我尝试根据标题字符串命名屏幕,然后使用 Navigator.of(context).pushNamed(image_caption)。但它没有用,所以我怎么能使用 if 语句
-
您必须执行
pushNamed("/" + image_caption);并修改main文件中的路径,在该文件中声明路径名称与pushNamed中使用的路径名称相同
标签: flutter navigation categories