Как мне получить доступ к поставщику Riverpod из другого файла?

#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));
  }
}