【发布时间】:2022-01-06 22:21:28
【问题描述】:
这是我的 TextFormField 代码,我收到错误“Null check operator used on a Null value”,如果我从当前状态中删除 null 检查运算符,则会引发另一个异常。
import 'package:firebase/sign_up.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';
class First_Page extends StatefulWidget {
const First_Page({Key? key}) : super(key: key);
@override
_First_PageState createState() => _First_PageState();
}
class _First_PageState extends State<First_Page> {
final key= GlobalKey<FormState>();
final _auth=FirebaseAuth.instance;
final User_email_id=TextEditingController();
final user_Passowrd=TextEditingController();
@override
Widget build(BuildContext context) {
final email_id=TextFormField(
controller: User_email_id,
key: key,
validator: (value){
if(value!.isEmpty){
return "Please enter a value";
}
},
decoration:InputDecoration(
contentPadding:EdgeInsets.fromLTRB(20, 15, 20, 15),
prefixIcon: Icon(
Icons.mail,
),
hintText: "Email-id",
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10)
),
),
);
这是我的按钮代码和 Onpressed..
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
gradient: LinearGradient(
colors: <Color>[
Colors.yellow,
Colors.greenAccent,
]
)
),
child: ButtonTheme(
padding:EdgeInsets.fromLTRB(20, 15, 20, 15) ,
minWidth: 350,
child: FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)
),
onPressed: (){
if(key.currentState!.validate()){
print('Successful');
}
},
child: Text(
'Sign-in',
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.bold,
),
),
),
),
),
这是我遇到的错误
======== Exception caught by gesture
===============================================================
The following _CastError was thrown while handling a gesture:
Null check operator used on a null value
When the exception was thrown, this was the stack:
#0 _First_PageState.build.<anonymous closure> (package:firebase/Sign_In.dart:119:39)
#1 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:989:21)
#2 GestureRecognizer.invokeCallback
(package:flutter/src/gestures/recognizer.dart:193:24)
#3 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
#4 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
#5 BaseTapGestureRecognizer.acceptGesture
(package:flutter/src/gestures/tap.dart:267:7)
#6 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
#7 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:444:20)
#8 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:420:22)
#9 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:278:11)
#10 GestureBinding._handlePointerEventImmediately
(package:flutter/src/gestures/binding.dart:374:7)
#11 GestureBinding.handlePointerEvent
(package:flutter/src/gestures/binding.dart:338:5)
#12 GestureBinding._flushPointerEventQueue
(package:flutter/src/gestures/binding.dart:296:7)
#13 GestureBinding._handlePointerDataPacket
(package:flutter/src/gestures/binding.dart:279:7)
#17 _invoke1 (dart:ui/hooks.dart:185:10)
#18 PlatformDispatcher._dispatchPointerDataPacket
(dart:ui/platform_dispatcher.dart:293:7)
#19 _dispatchPointerDataPacket (dart:ui/hooks.dart:98:31)
(elided 3 frames from dart:async)
Handler: "onTap"
Recognizer: TapGestureRecognizer#b49fb
debugOwner: GestureDetector
state: ready
won arena
finalPosition: Offset(172.0, 531.6)
finalLocalPosition: Offset(150.6, 23.6)
button: 1
sent tap down
如果我从 Currentstate 中删除 null 运算符,则会显示错误“无法无条件调用方法 'validate',因为接收者可以是 'null'。”
【问题讨论】:
-
这是因为
key.currentState等于null- 例如,您可以尝试:print('state: ${key.currentState}');并检查日志 -
@pskink 我是 Flutter 的新手,请您为我提供任何解决方案