Чтение переменной stati c при ее инициализации => Flutter Navigator.push - PullRequest
0 голосов
/ 13 июля 2020

У меня есть список виджетов с полным состоянием, которые я использую для навигации по страницам. но когда я пытался установить sh этот элемент списка в Navigator.pu sh (), он говорит: «Чтение переменной stati c во время его инициализации».

вот список:

List<ActionScreen> fullBodyNavigation = [
          ActionScreen(title: 'demo data', number: 20, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 17, milisecondAnimation: 800, milisecondTimer: 800, sessionNumber: 1,),
          ActionScreen(title: 'demodata', number: 15, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 30, milisecondAnimation: 1200, milisecondTimer: 1200, sessionNumber: 2,),
          ActionScreen(title: 'demodata', number: 15, gifDirectory: "assets/gifs/demodata.gif", currentList: fullBodyNavigation,
              frameMin: 0, frameMax: 2, milisecondAnimation: 2000, milisecondTimer: 2000, sessionNumber: 3,),
          .............
        ]

вот метод pu sh:

onPress: () {
      Navigator.push(context, MaterialPageRoute(builder: (context) => fullBodyNavigation[0],),);
},

Я нашел решение в stackoverflow, в котором говорилось, что я должен использовать «данные», такие как «fullBodyNavigation.data [0]». но ide сказал, что "данные получателя не определены". может кто-нибудь помочь?

вот ссылка на решение: Чтение переменной stati c во время инициализации | Флаттер

1 Ответ

1 голос
/ 13 июля 2020

Проблема в том, как вы создали список страниц навигации:

    List<ActionScreen> fullBodyNavigation = [
        ActionScreen(title: 'demo data', 
          number: 20, 
          gifDirectory: "assets/gifs/demodata.gif", 
          currentList: fullBodyNavigation,
          frameMin: 0, 
          frameMax: 17,
          milisecondAnimation: 800, 
          milisecondTimer: 800, 
          sessionNumber: 1,
        ),
        .............
    ]

Почему вы хотите передать currentList: fullBodyNavigation в ActionScreen. По сути, вы пытаетесь получить доступ к списку внутри самого списка. Проблема курицы и яйца. Вот что компилятор предупреждает вас об ошибке.

Чтобы исправить это, не передавайте currentList: fullBodyNavigation в ActionScreen. Вместо этого сделайте fullBodyNavigation полем stati c, а в ActionScreen просто получите доступ к нему с помощью имени класса. Это должно сделать ваше дело, а также порадовать компилятор

...