#flutter #listview #dart #gridview #onclick
Вопрос:
Я пытаюсь в течение долгих дней установить вид сетки на экране, нажмите «прослушиватель», перейдите к различным вариантам экрана, но я не могу установить. я использовал класс модели, используя добавленные данные из gridview. пожалуйста, помогите мне в моей проблеме, я новичок в flutter через пару недель, и здесь прилагается мой код для вашей справки, и, пожалуйста, решите отредактировать мой код .
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
class GridDashboard extends StatelessWidget {
Items item1 = new Items(
title: "Calendar",
subtitle: "March, Wednesday",
event: "3 Events",
img: "assets/calendar.png");
Items item2 = new Items(
title: "Groceries",
subtitle: "Bocali, Apple",
event: "4 Items",
img: "assets/food.png",
);
Items item3 = new Items(
title: "Locations",
subtitle: "Lucy Mao going to Office",
event: "",
img: "assets/map.png",
);
Items item4 = new Items(
title: "Activity",
subtitle: "Rose favirited your Post",
event: "",
img: "assets/festival.png",
);
Items item5 = new Items(
title: "To do",
subtitle: "Homework, Design",
event: "4 Items",
img: "assets/todo.png",
);
Items item6 = new Items(
title: "Settings",
subtitle: "",
event: "2 Items",
img: "assets/setting.png",
);
@override
Widget build(BuildContext context) {
List<Items> myList = [item1, item2, item3, item4, item5, item6];
var color = 0xff453658;
return Flexible(
child: GridView.count(
childAspectRatio: 1.0,
padding: EdgeInsets.only(left: 16, right: 16),
crossAxisCount: 2,
crossAxisSpacing: 18,
mainAxisSpacing: 18,
children: myList.map((data) {
return Container(
decoration: BoxDecoration(
color: Color(color),
borderRadius: BorderRadius.circular(10),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(data.img, width: 42),
SizedBox(height: 14),
Text(
data.title,
style: GoogleFonts.openSans(
textStyle: TextStyle(
color: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w600,
),
),
),
SizedBox(height: 8),
Text(
data.subtitle,
style: GoogleFonts.openSans(
textStyle: TextStyle(
color: Colors.white38,
fontSize: 10,
fontWeight: FontWeight.w600,
),
),
),
SizedBox(height: 14),
Text(
data.event,
style: GoogleFonts.openSans(
textStyle: TextStyle(
color: Colors.white70,
fontSize: 11,
fontWeight: FontWeight.w600,
),
),
),
],
),
);
}).toList(),
),
);
}
}
class Items {
String title;
String subtitle;
String event;
String img;
Items({this.title, this.subtitle, this.event, this.img});
}
Комментарии:
1. вам нужны
GestureDetector
виджеты илиInkWell
виджеты — подробнее здесь: flutter.dev/документы/кулинарная книга/навигация2. как добавить и в каком месте добавить. я новичок в flutter всего 3 недели. пожалуйста, отредактируйте мой код, пожалуйста.
3. проверьте жесты (и в
cookbook
целом тоже)4. Все в порядке, чувак. но мой код другой . какое место я поставил?
5. Поместите чернильницу в контейнер, возвращаемый gridview, и запишите функцию навигации в onTap, и вы можете использовать if/else или переключиться, или вы можете добавить номер страницы в объект «Элементы», на который вы хотите перейти и направить соответственно. Вы можете создать динамическую страницу, чтобы вы могли просто передать имя элемента в качестве параметров при отправке пользователя на следующую страницу, и следующая страница будет отображаться в соответствии с любым переданным вами элементом.