MaterialPageRoute 在颤振中的墨水池内不起作用?
当用户单击某个项目时,我试图导航到另一个页面...我使用了 InkWell 小部件并使用了 Push() 来传递参数。 我无法弄清楚问题是在 MaterialPAgeRoute 还是在 Inkwell ontap() 中...我尝试过 GestureDetector 并将 IgnorePointer 包装在 Inkwell 的子项中...但它不起作用,
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_application_1/pages/home_detail_page.dart';
import 'package:velocity_x/velocity_x.dart';
import '../../models/catalog.dart';
import '../../widgets/themes.dart';
import 'catalog_image.dart';
//cataloglist-----
class CatalogList extends StatelessWidget {
const CatalogList({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
shrinkWrap: true,
itemCount: CatalogModel.items.length,
itemBuilder: (context, index) {
final catalog = CatalogModel.items[index];
return InkWell(
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeDetailPage(
catalog: catalog,
),
),
),
// onTap: () => {print("tapped on container")},
child: CatalogItem(catalog: catalog),
);
},
);
}
}
//catalog item------------
class CatalogItem extends StatelessWidget {
final Item catalog;
const CatalogItem({Key? key, required this.catalog})
: assert(catalog != null),
super(key: key);
@override
Widget build(BuildContext context) {
return VxBox(
child: Row(
children: [
CatalogImage(
image: catalog.image,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
catalog.name.text.lg.color(MyTheme.darkBluishColor).bold.make(),
catalog.desc.text.textStyle(context.captionStyle).make(),
10.heightBox,
//--space
ButtonBar(
alignment: MainAxisAlignment.spaceBetween,
buttonPadding: EdgeInsets.zero,
children: [
"\$${catalog.price}".text.bold.xl.make(),
ElevatedButton(
onPressed: () {},
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.all(MyTheme.darkBluishColor),
shape: MaterialStateProperty.all(StadiumBorder())),
child: "Buy".text.make(),
)
],
).pOnly(right: 8.0)
],
))
],
),
).white.rounded.square(150).make().py16();
}
}
这是我想要导航的页面
import 'package:flutter/material.dart';
import 'package:flutter_application_1/models/catalog.dart';
import 'package:velocity_x/velocity_x.dart';
class HomeDetailPage extends StatelessWidget {
final Item catalog;
const HomeDetailPage({Key? key, required this.catalog})
: assert(catalog != null),
super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: [Image.network(catalog.image)]),
);
}
}
这是一个单独的路线页面...
class MyRoutes {
static String homeDetailsRoute = "/detail";
}
I am trying to navigate to another page when user click an item...i have used InkWell widget and have used push() for passing argument..
I am not able to figure out whether the problem is in MaterialPAgeRoute or in Inkwell ontap() ...I had tried GestureDetector and also wrapped IgnorePointer inside the Inkwell's child... but it doesnt work
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_application_1/pages/home_detail_page.dart';
import 'package:velocity_x/velocity_x.dart';
import '../../models/catalog.dart';
import '../../widgets/themes.dart';
import 'catalog_image.dart';
//cataloglist-----
class CatalogList extends StatelessWidget {
const CatalogList({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return ListView.builder(
shrinkWrap: true,
itemCount: CatalogModel.items.length,
itemBuilder: (context, index) {
final catalog = CatalogModel.items[index];
return InkWell(
onTap: () => Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomeDetailPage(
catalog: catalog,
),
),
),
// onTap: () => {print("tapped on container")},
child: CatalogItem(catalog: catalog),
);
},
);
}
}
//catalog item------------
class CatalogItem extends StatelessWidget {
final Item catalog;
const CatalogItem({Key? key, required this.catalog})
: assert(catalog != null),
super(key: key);
@override
Widget build(BuildContext context) {
return VxBox(
child: Row(
children: [
CatalogImage(
image: catalog.image,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
catalog.name.text.lg.color(MyTheme.darkBluishColor).bold.make(),
catalog.desc.text.textStyle(context.captionStyle).make(),
10.heightBox,
//--space
ButtonBar(
alignment: MainAxisAlignment.spaceBetween,
buttonPadding: EdgeInsets.zero,
children: [
"\${catalog.price}".text.bold.xl.make(),
ElevatedButton(
onPressed: () {},
style: ButtonStyle(
backgroundColor:
MaterialStateProperty.all(MyTheme.darkBluishColor),
shape: MaterialStateProperty.all(StadiumBorder())),
child: "Buy".text.make(),
)
],
).pOnly(right: 8.0)
],
))
],
),
).white.rounded.square(150).make().py16();
}
}
this is the page where I want to navigate
import 'package:flutter/material.dart';
import 'package:flutter_application_1/models/catalog.dart';
import 'package:velocity_x/velocity_x.dart';
class HomeDetailPage extends StatelessWidget {
final Item catalog;
const HomeDetailPage({Key? key, required this.catalog})
: assert(catalog != null),
super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(children: [Image.network(catalog.image)]),
);
}
}
this is a separate route page...
class MyRoutes {
static String homeDetailsRoute = "/detail";
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论