Flutter SharedPreferences типа 'String' не является подтипом типа 'List <Object>' - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь получить SharedPreferences stringList, но произошло исключение. Я пытаюсь решить это, но застрял (я нуб). Вот код:

  List<String> name;

  getName() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    if (prefs.containsKey("name")) {
      name = prefs.getStringList("name");
    }
    return [];
  }

  @override
  void initState() {
    this.getName();
    super.initState();
  }

@override
  Widget build(BuildContext context) {
    return name.isEmpty
        ? Container(
            color: Colors.white,
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Image.asset("assets/no-data.png"),
                  Text("No Seeds Saved", style: TextStyle(fontSize: 20))
                ],
              ),
            ),
          )
        : ListView.builder(
            itemCount: name.length,
            itemBuilder: (context, index) {
              final item = name[index];
              return Container(
                padding: EdgeInsets.all(8),
                child: Card(
                  color: Colors.teal[600],
                  child: ListTile(
                    title: Text(item,
                        style: TextStyle(
                            color: Colors.white, fontWeight: FontWeight.bold)),

                    trailing: IconButton(
                        icon: Icon(Icons.remove_circle,
                            color: Colors.redAccent[400]),
                        onPressed: () {}),
                  ),
                ),
              );
            },
          );
  }

Произошло исключение. _TypeError (тип 'String' не является подтипом типа 'List')

Следующий _TypeError был брошен при создании _BodyBuilder: тип 'Future' не является подтипом типа 'List'

Может ты мне помогаешь?

1 Ответ

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

Решил это сам, потому что я не правильно объявил свою переменную, а также я не вызывал сам setState. Вот что я изменяю

List<String> name = [];
  getName() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    if (prefs.containsKey("name")) {
      setState(() {
        name.addAll(prefs.getStringList("name"));
      });
    }
  }

Я просто оставлю это здесь на случай, если у кого-то возникнет такая же проблема xD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...