Flutter; получить номер индекса для списка

#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)
  ]
)