#flutter #riverpod
Вопрос:
Я привык к Provider.of()
вызову провайдера, чтобы получить провайдера из другого места в дереве виджетов, но каждый ресурс 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));
}
}