Reputation: 503
I want to add Navigation to my GridListTiles but I don't know how. My GridView is like this :
Also if anyone knows the container navigation it will also work for GridListTile
Update1: Added more code
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter layout demo',
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter layout demo'),
),
body: Center(child: _buildGrid()),
),
);
}
Widget _buildGrid() => GridView.extent(
maxCrossAxisExtent: 150,
padding: const EdgeInsets.all(4),
mainAxisSpacing: 4,
crossAxisSpacing: 4,
children: _buildGridTileList(30));
List<Widget> _buildGridTileList(int count) =>
List.generate(
count,
(i) => InkWell(
onTap: ()=> Navigator.of(context).push(
MaterialApp(
builder: (context) =>
YourWidgetName()//Added you can also pass the variable i to the next screen by passing it into your next screen constructor.
)
),
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.black)
),
child: Image.asset('images/pic$i.jpg'),
),
),
);
}
Upvotes: 0
Views: 879
Reputation: 550
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter layout demo',
home: Scaffold(
appBar: AppBar(
title: const Text('Flutter layout demo'),
),
body: Center(child: _buildGrid(context)),
),
);
}
Widget _buildGrid(BuildContext context) => GridView.extent(
maxCrossAxisExtent: 150,
padding: const EdgeInsets.all(4),
mainAxisSpacing: 4,
crossAxisSpacing: 4,
children: _buildGridTileList(30,context));
List<Widget> _buildGridTileList(int count,BuildContext context) =>
List.generate(
count,
(i) => InkWell(
onTap: ()=> Navigator.of(context).push(MaterialPageRoute(builder: (context)=>Scaffold(body:Text(i.toString())))),//you can pass the index (i) in the constructor of YourWidget(i) something like this if needed
child: Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.black)
),
child: Image.asset('images/pic$i.jpg'),
),
),
);
}
Upvotes: 1