строитель для обновления в ChangeNotifierProxyProvider при флаттере

сначала спасибо за проверку моего вопроса.

Я новичок и у меня есть такой код:

ChangeNotifierProxyProvider<Auth, ImgProvider>(
          builder: (ctx, auth, previousItem) => ImgProvider(
            auth.token,
            auth.userId,
            previousItem == null ? [] : previousItem.items,
          ),
        ),

???????????? ???????????? ???????????? ???????????????????????? ???????? ???????????????????????????? ???????? ???????????????????????? ???????????? ???????????????????????? ????????

ChangeNotifierProxyProvider

???? ????????????'???? ???????????? ???????????? ???????????????????????????? ???????????????????????? ???????? ???????????? ????????????????. ???? ???????????????????????????? ???????? ???????????????? ???????????????? :

ChangeNotifierProxyProvider<Auth, ImgProvider>(
          update: (ctx, auth, previousItem) => ImgProvider(
            auth.token,
            auth.userId,
            previousItem == null ? [] : previousItem.items,
          ),

???????????? ???????????????????????? ???????????????????????? ???????????????? ???????? ???????????????? ???????????? ???????????????????????????????????? '????????????????????????' ???????? ????????????????????????????????.

???????????????? ???? ???????????????? ????????: ???????????? ???????????? ???????????????????????? ???????????????????????????? ???????? ???????? ???????????????? ????????????????. ???????????????????????? ????????????????!


person ismail    schedule 16.07.2020    source источник
comment
извините, я не понял последнюю часть, But with the change of builder to create and update on что вы имеете в виду, вы все еще можете использовать create и update, builder - это когда вам нужно использовать поставщика непосредственно в следующем виджете и попытаться избежать шаблонов с помощью Builder или Consumer   -  person EdwynZN    schedule 19.07.2020
comment
Спасибо за вопрос. Я имею в виду, что в первый раз ChangeNotifierProxyProvider имеет построитель вместо обновления, как в приведенном выше коде. я хочу: не могли бы вы исправить мне этот код, пожалуйста?   -  person ismail    schedule 20.07.2020


Ответы (1)


решение состоит в том, чтобы изменить его следующим образом:

 ChangeNotifierProxyProvider<Auth, ImgProvider>(
          create: (ctx) => ImgProvider(),
          update: (ctx, auth, previousItem) => previousItem
            ..receiveToken(
                auth, previousItem == null ? [] : previousItem.items),
        ), 

и создайте в ImgProvider () такую ​​функцию:

void receiveToken(Auth auth, List<ImgVar> items) {
    authToken = auth.token;
    userId = auth.userId;
    _items = items;
  }
person ismail    schedule 21.07.2020