Провайдер в другом маршруте Flutter
Я хотел загрузить изображение в Firebase Storage, когда увидел эту ошибку:
The provider you are trying to read is in a different route.
Итак, я начал изучать, что это за провайдер, и теперь я понял, что мне нужно включить страницу, которую я использую для загрузки изображения, в том же маршруте предка.
Provider
типа
Database
.
Итак, у меня возникла проблема внутри «Registration_form», созданного «LogInPage» через навигатор следующим образом:
void navigateToRegistrationForm(context) {
Navigator.push(context,
MaterialPageRoute<void>(builder: (BuildContext context) {
return Reg_Form();
}));
return;
}
Теперь я меняю код примерно так:
void navigateToRegistrationForm(context) {
Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => Provider<Database>(
create: (_) => FirestoreDatabase(),
builder: (context, child) => Reg_Form(),
)));
return;
}
Но я не понимаю, что мне передать
create
метод ... я просто хочу создать
Reg_Form
в правильном пути для вызова функций Firebase, чтобы поместить файл в хранилище firebase, поэтому я думаю, что
FirebaseDatabase
не то, что мне подходит.
1 ответ
Если я правильно понимаю вашу проблему, вы можете переместить
ChangeNotifierProvider
для тебя
Database
класс выше в дереве виджетов, обернув ваш
MaterialApp
вот так:
ChangeNotifierProvider<Database> (
builder: (context) => Database(),
child: MaterialApp(...
Или просто измените
create
в том, что вы предоставили
create: (_) => Database(),
В любом случае вы должны получить доступ к правильному Provider / BuildContext в вашей регистрационной форме со стандартным
context.read<Database>()...