Я не могу получить доступ к провайдеру, определенному выше Scaffold, из showModalBottomSheet в FloatingActionButton.
Я определил домашнюю страницу так:
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (_) => MyProvider(),
builder: (context, _) {
return Scaffold(
body: Consumer<MyProvider>(
builder: (context, provider, _) {
return Text(provider.mytext); // this works fine
}
),
floatingActionButton: MyFAB(), // here is the problem
);
}
)
}
}
А это MyFAB:
class MyFAB extends StatefulWidget {
@override
_MyFABState createState() => _MyFABState();
}
class _MyFABState extends State<MyFAB> {
@override
Widget build(BuildContext context) {
return FloatingActionButton(
...
onPressed: () => show(),
);
}
void show() {
showModalBottomSheet(
...
context: context,
builder: (BuildContext context) {
return Wrap(
children: [
...
FlatButton(
onPressed: Provider.of<MyProvider>(context, listen: false).doSomething(); //Can't do this
Navigator.pop(context);
)
],
);
}
);
}
}
Ошибка: не удалось найти правильный поставщик ‹MyProvider над этим виджетом BottomSheet.
build
) вместо использованияcontext
вашего_MyFABState
экземпляра? - person Guilherme Matuella   schedule 09.09.2020BuildContext
из методаbuild
внутри_MyFabState
. Тот, который вы создаете для своегоFloatingActionButton
- person Guilherme Matuella   schedule 09.09.2020