Я привык к вызову провайдера Provider.of()
для получения провайдера из другого места в дереве виджетов, но каждый найденный мной ресурс Riverpod полагается на уже имеющийся доступ к переменной провайдера (имея оба виджета в одном файле). Для провайдера, который обращается только через два виджета, передать эту переменную достаточно просто, но я не думаю, что это возможно для доступа к провайдерам, которые созданы высоко в дереве виджетов. Есть ли способ найти поставщика?
Как мне получить доступ к провайдеру Riverpod из другого файла?
Ответы (1)
Вы можете просто импортировать файл, в котором определен поставщик. Провайдеры Riverpod создаются в глобальном масштабе, поэтому доступны где угодно.
Например:
// hello_provider.dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
final helloWorld = Provider<String>((_) => 'Hello World');
// widget.dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:my_app/hello_provider.dart'
class MyWidget extends ConsumerWidget {
@override
Widget build(BuildContext context, ScopedReader watch) {
return Text(watch(helloWorld));
}
}
person
Alex Hartford
schedule
24.05.2021