使用 flutter_riverpod 的认证架构

问题描述

我正在尝试使用 Firebase 在 Flutter 中实现带有电子邮件和密码的身份验证系统。

我想使用 Flutter_riverpod 来管理应用状态。

我创建了一个类来更新电子邮件和密码:

import 'package:Flutter_riverpod/Flutter_riverpod.dart';

final emailProvider = StateProvider<String>((ref) {
  return null;
});

final passwordProvider = StateProvider<String>((ref) {
  return null;
});

然后在登录类中,我希望能够更新电子邮件和密码的值:

class Login extends ConsumerWidget {


  void updateEmail(BuildContext context,String email) {
    context.read(emailProvider).state = email;
  }

  void updatePassword(BuildContext context,String pass) {
    context.read(passwordProvider).state = pass;
  }


  bool is_email_valid = false;
  bool is_pass_valid = false;
  final auth = FirebaseAuth.instance;



  bool circular = false;

  final GlobalKey<FormState> _formkey = GlobalKey<FormState>();


  @override
  Widget build(BuildContext context,ScopedReader watch) {

    final email = watch(emailProvider).state;
    final pass = watch(passwordProvider).state;
    final _auth = watch(authServicesProvider);

    return Scaffold(
...

然后在两个 textFormFields 上更新电子邮件和密码的值:

child: TextFormField(
                                keyboardType: TextInputType.emailAddress,validator: (value){
                                  if(value.isEmpty){
                                    return 'Email no válido';
                                  }
                                  if (!EmailValidator.validate(email)){
                                    return "Formato de email no válido";
                                  }
                                  if (EmailValidator.validate(email)){
                                    is_email_valid = true;

                                  }

                                  return null;
                                },onChanged: (value){
                                 
                                  updateEmail(context,value);

                                },decoration: Inputdecoration(
                                  errorStyle: TextStyle(
                                    color: ColoresApp.grisMovMap,fontSize: 16,),border: InputBorder.none,hintText: "Email",prefixIcon: Icon(Icons.email),)),child: TextFormField(

                              validator: ( value){
                                if (value.isEmpty){
                                  return 'Contraseña vacia';
                                }
                                if(value.length < 6){
                                  return "Contraseña muy corta,6 caracteres mínimo";
                                }
                                return null;

                              },obscureText: true,onChanged: (value){
                                updatePassword(context,value);


                              },decoration: Inputdecoration(

                                border: InputBorder.none,hintText: "Contraseña",prefixIcon: Icon(Icons.vpn_key),errorStyle: TextStyle(
                                  color: ColoresApp.grisMovMap,

但我在线路上遇到了问题:

  void updateEmail(BuildContext context,String pass) {
    context.read(passwordProvider).state = pass;
  }

我在 android studio 中收到此错误消息,我不明白:

enter image description here

我在使用 Riverpod 时做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)