Недопустимое значение: только допустимое значение 0: 1 - Flutter - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь создать список, в котором каждый элемент содержит значок на дальней стороне. Однако, когда я пытаюсь получить доступ к списку, когда добавлено более одного элемента, я получаю сообщение об ошибке: Invalid value: Only valid value is 0: 1

Вот код:

import 'package:flutter/material.dart';
import './images.dart';

class LikedList extends StatefulWidget {
  @override
  _LikedListState createState() => _LikedListState();
}

class _LikedListState extends State<LikedList> {
  static List<bool> _likes = List.filled(ImagesState.likes.length,true);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Liked List'),
      ),
      body: ListView.separated(
        separatorBuilder: (context, index) => Divider(),
        itemCount: ImagesState.likes.length,
        itemBuilder: (context, index) {
          final item = ImagesState.likes[index];
          return ListTile(
            title: Text(item),
            trailing: IconButton(
              icon: _likes[index]
                  ? Icon(
                      Icons.favorite_border,
                      color: Colors.grey,
                    )
                  : Icon(
                      Icons.favorite,
                      color: Colors.red,
                    ),
              onPressed: () {
                setState(() {
                  print(_likes);
                  _likes[index] = !_likes[index];
                  print(_likes);
                });
              },
            ),
            onLongPress: () {
              setState(() {
                print(ImagesState.likes[index]);
                ImagesState.likes.removeAt(index);
              });
            },
          );
        },
      ),
    );
  }
}

Кто-нибудь знает, почему это происходит? Подобные предложения указывают на то, что itemCount не установлен, но я использую это.

1 Ответ

0 голосов
/ 27 мая 2020

Кажется, вы создаете список фиксированной длины с помощью оператора:

static List<bool> _likes = List.filled(ImagesState.likes.length,true);

Это создаст заполненный список фиксированной длины length .likes.length, содержащий значения «true». Вам нужно добавить третий параметр growable: true в вызов метода, чтобы иметь возможность добавлять в список.

...