#list #android-studio #flutter #indexing
#Список #android-studio #flutter #индексирование
Вопрос:
В моем приложении у меня есть список «целей».
На главной странице есть list.map
кнопка, которая делает кнопку для каждой цели.
Эти кнопки содержат название и описание цели.
Когда пользователь нажимает на них, они переходят на другую страницу ( goalPage
)
Когда загружается страница целей, на ней должна отображаться цель, на которую нажал пользователь. Я подумал, что если бы я мог получить доступ к списку idex-number цели на странице целей, это сработало бы, потому что вся информация, которая мне нужна, находится в списке. Но сейчас я не знаю, как получить этот номер индекса, особенно потому, что он может измениться, если пользователь удалит цель или добавит новую.
Список (на главной странице):
List<Goal> goals = [
Goal(title: 'Example goal', description: 'this is an example goal'),
];
Отображение целей (на главной странице):
Column(
children: goals.map((goal) => GoalTemplate(goal: goal)).toList(),
),
шаблон кнопки цели (в файле goalTemplate):
class GoalTemplate extends StatefulWidget {
final Goal goal;
GoalTemplate({this.goal});
@override
_GoalTemplateState createState() => _GoalTemplateState();
}
class _GoalTemplateState extends State<GoalTemplate> {
int listIndex;
void navToGoalPage () async {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => GoalPage(),));
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
setState(() {
listIndex = goals.indexOf();
});
navToGoalPage();
},
child: Column(
children: <Widget>[
Text(widget.goal.title),
Text(widget.goal.description),
],
),
);
}
}
(Страница цели вообще не работает, ну, вот почему я спрашиваю здесь, мне нужна страница, только с переменным значением текущего индекса (а не с общим количеством элементов в списке))
Ответ №1:
Попробуйте перейти от использования map к использованию for function:
Column(
children: [
for(int index = 0; index < goals.length; index ) // goals[index] is what you want to get
GoalTemplate(goal: goal)
]
)