我应该如何从不同的文件访问 Riverpod 提供者?

时间:2021-05-23 22:48:33

标签: flutter riverpod

我习惯于通过 provider 的 Provider.of() 调用从小部件树中的其他地方获取提供者,但我发现的每个 Riverpod 资源都依赖于对 provider 变量的访问权限(通过在同一个文件)。对于仅通过两个小部件访问的提供程序,传递此变量非常简单,但我认为这对于访问在小部件树中创建的提供程序不可行。有没有合适的方法来获取提供者?

1 个答案:

答案 0 :(得分: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));
  }
}