我正在尝试flutter,我是这方面的新手,当我使用API SERVICE登录时遇到了问题(我使用Rest API https://reqres.in),登录说
_CastError(对空值使用的空检查运算符)
错误来自下面的源代码
Container(
margin: const EdgeInsets.only(
left: 30, right: 30, top: 20, bottom: 20),
padding: const EdgeInsets.symmetric(vertical: 10),
width: double.infinity,
child: ElevatedButton(
onPressed: () {
if (Loginvalues.loginFormKey.currentState!.validate()) {
Loginvalues.userLogin(Loginvalues.loginEmailController, Loginvalues.loginPasswordController,);
}
},
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xff84c148),
elevation: 5,
padding: const EdgeInsets.all(15),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15))),
child: const SizedBox(
height: 15,
child: Text('SIGN IN',
style: TextStyle(
color: Colors.white,
fontSize: 15,
fontWeight: FontWeight.bold,
)),
),
)),
在线:
onPressed: () {
if (Loginvalues.loginFormKey.currentState!.validate()) {
Loginvalues.userLogin(Loginvalues.loginEmailController,
Loginvalues.loginPasswordController,);
这是我的登录控制器dart,其中loginFormkey被调用:
// ignore_for_file: prefer_const_constructors
import 'dart:convert';
import 'package:get/get.dart';
import 'package:crud_sample/screens/home_page.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class LoginController with ChangeNotifier {
TextEditingController loginEmailController = TextEditingController();
TextEditingController loginPasswordController = TextEditingController();
GlobalKey<FormState> loginFormKey = GlobalKey();
userLogin(
TextEditingController loginEmailController,
TextEditingController loginPasswordController,
) async {
try{
var headers = {"Content-Type": "application/json"};
var body = {
'email' : loginEmailController.text.trim(),
'password' : loginPasswordController.text.trim()
};
http.Response response = await http.post(
Uri.parse('https://reqres.in/api/login'),
headers: headers,
body: jsonEncode(body),
);
if(response.statusCode == 200){
Map json = jsonDecode(response.body.toString());
print(json['token']);
if(json['token'] != ''){
Get.to(() => HomePage());
}else{
print("Invalid Details!");
}
}
}catch(e){
print("Error $e");
}
}
}
我的依赖关系
库比蒂诺_icons:^1.0.2 http:^0.13.6获取:^4.6.5提供程序:6.0.5级
我做错了吗?
Fix _CastError(用于空值的空检查运算符)
2条答案
按热度按时间nfzehxib1#
错误消息表明您正在对空值使用空检查运算符(
!
)。在本例中,当您尝试访问Loginvalues.loginFormKey.currentState
时,它似乎为null。若要解决此问题,您需要确保
Loginvalues.loginFormKey.currentState
在使用null检查运算符之前不为null。可以按如下方式修改代码:通过在访问
validate()
之前添加空检查Loginvalues.loginFormKey.currentState != null
,可以防止对空值使用空检查运算符。请确保在代码中更新此更改,然后尝试再次运行它。
我希望这能帮助你解决这个问题!
mklgxw1f2#
用这个改变下面的部分。因为它是错误的。在这里,您将首先检查它是否为null。如果不是,那就满足条件并实现它。希望这能帮上忙。
编辑:
在这里发送上下文与它。另一方面:
接收上下文。