在尝试设置配置文件管理时如何正确使用提供程序?
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,您应该修改您的代码如下:
- 修改授权类:
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;
}
}
- 使用它:
Provider.of<AuthClass>(context).inputData(), // .auth is redundant
- 确保您已在主文件中定义提供程序:
ChangeNotifierProvider(
create: (context) => AuthClass(),
child: const MyApp(),
),
您还应该将 Provider
包添加到您的依赖项中。
我正在尝试使用提供程序来获取有关用户的不同信息(实际上是 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,您应该修改您的代码如下:
- 修改授权类:
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;
}
}
- 使用它:
Provider.of<AuthClass>(context).inputData(), // .auth is redundant
- 确保您已在主文件中定义提供程序:
ChangeNotifierProvider(
create: (context) => AuthClass(),
child: const MyApp(),
),
您还应该将 Provider
包添加到您的依赖项中。