Я пытаюсь использовать shared_preferences для реализации функции «избранное» в flutter

#flutter #local-storage #flutter-web #flutter-sharedpreference

Вопрос:

Я пытаюсь создать функцию «избранное», используя shared_preferences во flutter.

Используйте этот метод для локального хранения без базы данных.

Страница для использования globals.dart имеет переменную bool, button.dart которая является окном выбора страницы (измените цвет кнопки при закладке), и есть файл home0_01.dart с «кнопкой избранного значка (нажмите, чтобы добавить эту кнопку в избранное)».

Здесь я хотел бы реализовать его для локального хранения с помощью shared_prefer

Но даже глядя на множество примеров кода, это трудно реализовать. favoriteButton_0_01 В моем коде их сотни, потому что там так много home0_01.dart файлов. Как я должен кодировать в этом случае?

глобалы.дротик

 library prj.com.globals;

bool favoriteButton_0_01 = true;
bool favoriteButton_0_02 = false;
...
 

кнопка.дротик

 ...
    LearnLevelButton(
                      color: favoriteButton_0_01 ? Colors.orange : Color(0xff7ba6f9),
                      text: '',
                      onTap: () async {
    
                          await Navigator.pushReplacement(context, MaterialPageRoute(builder: (context){
                            return home0_01();
                          }));
                      },
                      ),
...
 

home0_01.дротик

       void delete() async {
    
        setState(() {
          favoriteButton_0_01 = false;
          print(favoriteButton_0_01);
        });
      }
    
      void saved() async {
    
        setState(() {
          favoriteButton_0_01 = true;
          print(favoriteButton_0_01);
        });
      }

...
actions: <Widget>[
            IconButton(
                onPressed: favoriteButton_0_01 ? delete : saved,
              icon: favoriteButton_0_01
                  ? Icon(Icons.bookmark_rounded, color: Colors.yellow[800], size: 30) 
                  : Icon(Icons.bookmark_add_outlined, color: Colors.yellow[800],size: 30),
            ),
          ],
...
 

Комментарии:

1. почему у вас есть сотни файлов вместо того, чтобы делать что-то более эффективное?

2. Это связано с тем, что для каждого файла требуется отдельное видео на YouTube и отдельные «избранные».

3. то, как вы это делаете, кажется крайне неэффективным, не можете ли вы сохранить видео в списке с помощью чего-то вроде пользовательского класса и сгенерировать их позже ?

4. Я также новичок, и api YouTube и название панели приложений меняются каждый раз, но я не смог найти эффективного способа справиться с этим.

Ответ №1:

Вы можете посмотреть этот учебник, чтобы выполнить что-то подобное: https://www.youtube.com/watch?v=TRB0qZ2XaO4. В принципе, это одна и та же идея. Нажмите кнопку и добавьте ее в другое место. Надеюсь, это может помочь.