Неизвестное чтение Flutter HookWidget из контекста
Сегодня мне интересно, почему я не могу использовать
context.read
внутри
HookWidget
после определения этих кодов в проекте:
class FavoriteAddressBottomSheet extends HookWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Material(
color: Colors.transparent,
child: Container(
...
child: Column(
children: [
ValueListenableBuilder(
valueListenable: _address.listenable(),
builder: (BuildContext context, Box address, __) {
return Expanded(
child: ListView.builder(
padding: EdgeInsets.zero,
itemBuilder: (context, index) {
return GestureDetector(
onTap: ()=> context.read(orderStateNotifierProvider.notifier).updateAddress(),
child: Container(
...
);
},
itemCount: _address.length,
),
);
}),
],
),
),
),
),
);
}
}
мой
orderStateNotifierProvider
а также
updateAddress
верны, потому что я использовал их в проекте, но когда я пытаюсь использовать внутри которых
ListView
завернутый в
ValueListenableBuilder
я получаю эту ошибку:
The method 'read' isn't defined for the type 'BuildContext'.
1 ответ
Решение
Вы импортировали провайдера? context.read - это метод расширения от Provider. Чтобы использовать его, вам необходимо импортировать Provider.
import 'package:flutter_riverpod/flutter_riverpod.dart';