Я создал представление сетки, но теперь моя проблема заключается в том, как я могу сделать эту сетку индивидуально связанной с разными страницами. Ниже мой фрагмент кода.
Большое тебе спасибо.
final List<String> _listItem = [
'assets/images/SDG Wheel_Transparent_WEB.png',
'assets/images/unicef.png',
'assets/images/share.png',
'assets/images/teamTrees.png',
'assets/images/TeamSeas.jpeg',
'assets/images/global giving.png',
'assets/images/svc.png',
'assets/images/food2.png',
];
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Container(
width: double.infinity,
height: SizeConfig.screenHeight / 2.5,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/food2.png'),
fit: BoxFit.cover)),
),
const Align(
alignment: Alignment.centerLeft,
child: Text(
"Donation Cards",
style: TextStyle(
fontFamily: 'Quicksand',
fontSize: 31,
color: Colors.black,
fontWeight: FontWeight.w300,
),
),
),
Divider(color: Colors.black38),
const SizedBox(
height: 20,
),
Expanded(
child: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
children: _listItem
.map((item) => Card(
color: Colors.transparent,
elevation: 0,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: DecorationImage(
image: AssetImage(item), fit: BoxFit.cover)),
),
))
.toList(),
))
],
),
);
}
}
................................................. ................................................. ................................................. ................................................. ................................................. ................
Вы можете создать еще один список ссылок и получить доступ к этим ссылкам внутри gridview по индексу, как вы это делаете с путями к изображениям. Вы также можете использовать список, где каждая карта может состоять из imagePath и ссылки и соответственно назначать это внутри вашего построителя сетки.
Привет @K_Chandio, не могли бы вы привести пример кода, спасибо
Хорошо, я вышлю вам измененный код, который вы предоставили через некоторое время.
любая помощь. я так застрял на этом
Я посылаю вам код, попробуйте его и дайте мне знать, если вы понимаете или нет. здесь, внутри ссылки, укажите пути, по которым вы хотите перемещаться. А также вам нужно добавить имена маршрутов на каждую страницу (если вы не знаете, спросите меня). onTap перенаправит вас на нужную страницу, которую вы добавили в карту _listItems выше.
final List<Map> _listItem = [
{'img': 'assets/image.jpeg', 'link': 'YourPageName'},
{'img': 'assets/image.jpeg', 'link': 'myDesiredUrl'},
{'img': 'assets/image.jpeg', 'link': 'myDesiredUrl'},
{'img': 'assets/image.jpeg', 'link': 'myDesiredUrl'},
{'img': 'assets/image.jpeg', 'link': 'myDesiredUrl'},
];
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
Container(
width: double.infinity,
height: MediaQuery.of(context).size.height,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/food2.png'),
fit: BoxFit.cover)),
),
const Align(
alignment: Alignment.centerLeft,
child: Text(
"Donation Cards",
style: TextStyle(
fontFamily: 'Quicksand',
fontSize: 31,
color: Colors.black,
fontWeight: FontWeight.w300,
),
),
),
const Divider(color: Colors.black38),
const SizedBox(
height: 20,
),
Expanded(
child: GridView.count(
crossAxisCount: 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10,
children: _listItem
.map((item) => Card(
color: Colors.transparent,
elevation: 0,
child: GestureDetector(
onTap: () {
//Navigate to the desired page according to the map
//you can also check the index here of item list and navigate accordingly without creating map
Navigator.of(context).pushNamed(item['link']);
},
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
image: DecorationImage(
image: AssetImage(item['img']),
fit: BoxFit.cover)),
),
),
))
.toList(),
))
],
),
);
} ```
Вы можете создать новый класс/функцию, в котором вы будете отправлять
index
gridview в класс/функцию, а внутри вашего класса/функции на основе индекса вы будете направлять пользователей на разные маршруты/экраны.if index==1 { // navigate to login screen}
и др.