Как исправить ошибку дублирования в ListView после нажатия кнопки «Назад»? - PullRequest
0 голосов
/ 16 апреля 2019

enter image description here

дублирование происходит только после нажатия кнопки "Назад".

Я загрузил свой полностью код просмотра списка в github. код списка

1 Ответ

0 голосов
/ 16 апреля 2019

Кажется, что

Widget createListView(BuildContext context, AsyncSnapshot snapshot) {

// ... 

      children: List.generate(values.length, (index) {

имеет неправильную длину.

Имейте в виду, что ваш build метод может быть вызван в любое время (и при навигации он будет вызван точно).

Поэтому твой

getRegister1() 

вызывается много раз, и поэтому вам нужно больше исследовать этот метод, поскольку код вашей HelperDatabase1 не предоставлен.

(может, вот ваша проблема ...

var catLocal = (await HelperDatabase1().displayDefCatRelation())
var defCatLocal = (await HelperDatabase1().display()) +

cat.add(catLocal[i].c);  // maybe this actually saves in your db/cache

но я не уверен в этом )


Еще одна вещь, на которую вам следует обратить внимание, это то, что ваш getRegister1 () должен быть «получен ранее». Проверьте этот снайпер из документов флаттера .

FutureBuilder<String>(
  future: _calculation, // a previously-obtained Future<String> or null
  builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
    switch (snapshot.connectionState) {
      case ConnectionState.none:
        return Text('Press button to start.');
      case ConnectionState.active:
      case ConnectionState.waiting:
        return Text('Awaiting result...');
      case ConnectionState.done:
        if (snapshot.hasError)
          return Text('Error: ${snapshot.error}');
        return Text('Result: ${snapshot.data}');
    }
    return null; // unreachable
  },
)
...