1 year ago
#352591
Manab Gogoi
MaterialPageRoute is not working inside inkwell in flutter?
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";
}
android
ios
flutter
dart
velocity
0 Answers
Your Answer