在尝试设置配置文件管理时如何正确使用提供程序?

How to use provider correctly while I'm tryng to set a profile management?

我正在尝试使用提供程序来获取有关用户的不同信息(实际上是 uid),但它不起作用,因为 .auth 没有为类型 'AuthClass' 定义,通过我放置 AuthClass 的方式是因为我的代码在那里,但我不确定它是否好 class。我在寻找解决方案,他们说我们必须使用我们的提供商身份验证 class,但我也不知道在哪里可以找到它。也许你能帮帮我

这是我的代码(.auth 带有红色下划线):

body: SingleChildScrollView(
        child: Column(
          children: <Widget> [
            FutureBuilder(
              future: Provider.of<AuthClass>(context).auth.inputData(),
              builder: ( context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  return Text("${snapshot.data}");
                } else {
                  return Text("Loading...");
                }
              },
            )
          ]
        )
      )

这是我的代码的另一部分,其中包含 inputData():

import 'package:firebase_auth/firebase_auth.dart';

class AuthClass {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  void inputData()  async {
    final User? user =  _auth.currentUser;
    final uid = user!.uid;
    print(uid);
  }
}

为了使用 Provider,您应该修改您的代码如下:

  1. 修改授权类:
class AuthClass extends ChangeNotifier {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  Future<bool> inputData()  async {
    final User? user =  await _auth.currentUser;
    final uid = user!.uid;
    print(uid);
    return true;
  }
}
  1. 使用它:
Provider.of<AuthClass>(context).inputData(), // .auth is redundant
  1. 确保您已在主文件中定义提供程序:
ChangeNotifierProvider(
      create: (context) => AuthClass(),
      child: const MyApp(),
    ),

您还应该将 Provider 包添加到您的依赖项中。