Я не могу использовать ChangeNotifierProxyProvider
.
У меня есть StreamBuilder
(список элементов), и мне нужно обновить один элемент, когда что-то изменится. Это часть виджета с ChangeNotifierProxyProvider
:
return StreamBuilder<List<MyItem>>(
stream: _listStream,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return CircularProgressIndicator(strokeWidth: 3.0);
break;
default:
if (snapshot.hasData && snapshot.data.length > 0) {
return ListView.builder(
padding: EdgeInsets.all(10.0),
controller: _controller,
itemCount: snapshot.data.length + 1,
itemBuilder: (context, index) {
return index >= snapshot.data.length
? CircularProgressIndicator(strokeWidth: 3.0)
: ChangeNotifierProxyProvider0<MyItem>(
create: (context) => snapshot.data[index],
update: (_, item) => item,
child: Consumer<MyItem>(
builder: (_, value, __) {
return ListTile(title: value.title);
},
),
);
},
);
} else {
return Container();
}
}
},
);
Это MyItem
:
class MyItem with ChangeNotifier {
String title;
void changeTitle(newT) {
title = newT;
notifyListeners();
}
}
В другой части приложения я вызываю функцию myItem.changeTitle
.
Я получаю следующую ошибку:
Было выбрано другое исключение: 'package: provider / src / listenable_provider.dart': Неудачное утверждение: строка 125 pos 28: 'value.hasListeners! = true ': неверно.
Следующее утверждение было выдано при построении Consumer <> (dirty, dependencies: [_InheritedProviderScope <>]):
UPDATE Кажется, это ошибка:
════════ Исключение, обнаруженное библиотекой виджетов ═════════════════════ ════════════════════════════════. MyItem использовался после удаления.
Встречается в строке Consumer
определение