用户登录

下面准备一下身份验证数据模型,打开 auth_model.dart,在这个 AuthModel 里面,添加两个属性,一个 Stirng 类型的 userId,默认值让它等于一个空白的字符,一个 String 类型的 name,默认值也可以是空白的字符,再添加一个 String 类型的 token ,默认值是一个空白的字符。这个 token 指的是登录成功以后,服务端给用户签发的令牌。

然后可以再添加一个 getter,返回的值的类型是 bool,名字是 isLoggedIn,返回的值可以用一下 token.isNotEmpty,也就是如果 token 的值不是空白,这个 isLoggedIn 就会返回 true,不然就返回的是 false。

下面可以修改一下这个 login 方法,方法接收一个参数,类型可以设置成 LoginData,参数的名字叫 data。用 async 标记一下这个方法。然后在方法里声明一个 uri ,值是 Uri.parse 处理一下登录接口的地址,AppConfig,导入这个 AppConfig,用一下它里面的 apiBaseUrl。然后是斜线 login。

声明一个 response,await ,执行 http.post,地址是 uri,添加一个 body 参数,值是 data 用一下 toJson 这个方法。因为现在这个 data 的类型是 LoginData,但是 post 这个方法要求它的 body 参数的值是一个 Object,所以这里我们要执行 LoginData 上面的这个 toJson 方法转换一下。再声明一个 responseBody ,等于 jsonDecode 处理一下 response.body。

异常

判断一下 response.statusCode 是不是等于 200 ,如果响应的状态码不是 200,可以 throw 一个异常,用一个 else ,然后在这个 else 区块里 throw 一个异常,用一下之前我们自己定义的 HttpException 这个异常,提供一个异常信息。

如果 responseBody 里面的有 message ,就用这个属性的值作为异常信息,如果没有值,就把异常信息设置成 网络请求出了点问题 🌋。

正常响应

如果请求得到了正常的响应,可以声明一个 auth,用一下 Auth.fromJson,把 responseBody 交给它。 下面设置一下 userId 的值,让它等于 auth.id 用一下 toString() 这个方法,因为 userId 我们规定它是一个 String 类型的值。再设置一下 name,让它等于 auth.name ,然后再设置一下 token ,让它等于 auth.token。 再执行一下 notifyListeners。 最后可以 return 这个 auth,再设置一下这个 login 方法 return 的值的类型,Future

logout

修改一下 logout 方法,把 userId,name 还有 token 都设置成空白的字符,再执行一下 notifyListeners() 。

定义身份验证模型(AuthModel)《 Flutter 2:身份验证 》

统计

13799
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点