簡體   English   中英

Flutter 代碼返回“在 null 上調用了 getter 'text'。”

[英]Flutter code returning “The getter 'text' was called on null.”

下面的代碼似乎沒有任何錯誤,我使用谷歌 Firebase 構建它但無法登錄。 這是登錄頁面代碼

 import 'package:flutter/material.dart';
 import 'utils/firebase_auth.dart';

 class LoginPage extends StatefulWidget {
  @override
  _LoginPageState createState() => _LoginPageState();
  }

class _LoginPageState extends State<LoginPage> {
  TextEditingController _emailController;
  TextEditingController _passwordController;

  @override
  void initstate() {
    _emailController = TextEditingController(text: "");
    _passwordController = TextEditingController(text: "");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: Stack(
        fit: StackFit.expand,
        children: <Widget>[
          Image(
            image: AssetImage("Assets/login.jpg"),
            fit: BoxFit.cover,
            color: Colors.grey,
            colorBlendMode: BlendMode.lighten,
          ),
          Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Container(
                height: 110,
                width: 110,
                child: Image(
                  image: AssetImage("Assets/house.png"),
                  fit: BoxFit.fill,
                  colorBlendMode: BlendMode.lighten,
                ),
              ),
              Form(
                child: Theme(
                  data: ThemeData(
                    brightness: Brightness.light,
                    primarySwatch: Colors.deepPurple,
                    inputDecorationTheme: InputDecorationTheme(
                      hintStyle: TextStyle(
                        color: Colors.black,
                        fontStyle: FontStyle.normal,
                        fontWeight: FontWeight.bold,
                        fontSize: 18.0,
                      ),
                    ),
                  ),
                  child: Container(
                    padding: const EdgeInsets.all(30.0),
                    child: Column(
                      children: <Widget>[
                        TextFormField(
                          controller: _emailController,
                          style: TextStyle(
                            color: Colors.black,
                            fontSize: 18.5,
                            fontWeight: FontWeight.w400,
                            fontStyle: FontStyle.italic,
                          ),
                          decoration: InputDecoration(
                            hintText: "Enter Email",
                            prefixIcon: Icon(Icons.email),
                          ),
                          keyboardType: TextInputType.emailAddress,
                        ),
                        TextFormField(
                          controller: _passwordController,
                          style: TextStyle(
                            color: Colors.black,
                            fontSize: 18.5,
                            fontWeight: FontWeight.w400,
                            fontStyle: FontStyle.italic,
                          ),
                          decoration: InputDecoration(
                            hintText: "Enter Password",
                            prefixIcon: Icon(Icons.remove_red_eye),
                          ),
                          keyboardType: TextInputType.text,
                          obscureText: true,
                        ),
                        const SizedBox(height: 15.0),
                        MaterialButton(
                          minWidth: 1000.0,
                          color: Colors.deepPurple,
                          child: Text(
                            "LOGIN",
                            style: TextStyle(
                                fontStyle: FontStyle.italic,
                                fontSize: 20,
                                color: Colors.white),
                          ),
                          onPressed: () async{
                            if (_emailController.text.isEmpty ||
                                _passwordController.text.isEmpty)
                              {
                                print("Please Enter Email and Password");
                                return;
                              }
                              bool res = await AuthProvider().signInWithEmail(
                                    _emailController.text,
                                    _passwordController.text);
                                    if(res){
                                      print("Login failed");
                                    }
                          },
                        ),
                        Row(
                          children: <Widget>[
                            Container(
                              padding: EdgeInsets.only(top: 30.0),
                              child: Text(
                                "Sign Up?",
                                style: TextStyle(
                                  color: Colors.deepPurple,
                                  fontStyle: FontStyle.italic,
                                  fontSize: 15.0,
                                ),
                              ),
                            ),
                            Container(
                              padding: EdgeInsets.only(top: 30.0, left: 125.0),
                              child: Text(
                                "forgot password?",
                                style: TextStyle(
                                  color: Colors.deepPurple,
                                  fontStyle: FontStyle.italic,
                                  fontSize: 15.0,
                                ),
                              ),
                            ),
                          ],
                        ),
                      ],
                    ),
                  ),
                ),
              ),
            ],
          ),
        ],
      ),
    );
  }
}

這是主要的。dart代碼包含未來

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'home.dart';
import 'loginpage.dart';
import 'splash.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: Colors.deepPurple,
        accentColor: Colors.purpleAccent,
      ),
      home: MainScreen(),
    );
  }
}

class MainScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: FirebaseAuth.instance.onAuthStateChanged,
      builder: (context, AsyncSnapshot<FirebaseUser> snapshot){
        if(snapshot.connectionState == ConnectionState.waiting)
        return SplashPage();
        if(!snapshot.hasData || snapshot.data == null)
          return LoginPage();
        return HomePage();
      },
    );
  }
}

這是錯誤信息

  E/flutter ( 1365): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The getter 'text' was called on null.
E/flutter ( 1365): Receiver: null
E/flutter ( 1365): Tried calling: text
E/flutter ( 1365): #0      Object.noSuchMethod  (dart:core-patch/object_patch.dart:53:5)
E/flutter ( 1365): #1      _LoginPageState.build.<anonymous closure> 
package:househunt/loginpage.dart:105
E/flutter ( 1365): #2      _InkResponseState._handleTap 
package:flutter/…/material/ink_well.dart:706
E/flutter ( 1365): #3      _InkResponseState.build.<anonymous closure> 
package:flutter/…/material/ink_well.dart:789
E/flutter ( 1365): #4      GestureRecognizer.invokeCallback 
package:flutter/…/gestures/recognizer.dart:182
E/flutter ( 1365): #5      TapGestureRecognizer.handleTapUp 
package:flutter/…/gestures/tap.dart:486
E/flutter ( 1365): #6      BaseTapGestureRecognizer._checkUp 
package:flutter/…/gestures/tap.dart:264
E/flutter ( 1365): #7      BaseTapGestureRecognizer.handlePrimaryPointer 
package:flutter/…/gestures/tap.dart:199
E/flutter ( 1365): #8      PrimaryPointerGestureRecognizer.handleEvent 
package:flutter/…/gestures/recognizer.dart:467
E/flutter ( 1365): #9      PointerRouter._dispatch 
package:flutter/…/gestures/pointer_router.dart:76
E/flutter ( 1365): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> 
package:flutter/…/gestures/pointer_router.dart:117
E/flutter ( 1365): #11     _LinkedHashMapMixin.forEach  (dart:collection-patch/compact_hash.dart:379:8)
E/flutter ( 1365): #12     PointerRouter._dispatchEventToRoutes 
package:flutter/…/gestures/pointer_router.dart:115
E/flutter ( 1365): #13     PointerRouter.route 
package:flutter/…/gestures/pointer_router.dart:101
E/flutter ( 1365): #14     GestureBinding.handleEvent 
package:flutter/…/gestures/binding.dart:218
E/flutter ( 1365): #15     GestureBinding.dispatchEvent 
package:flutter/…/gestures/binding.dart:198
E/flutter ( 1365): #16     GestureBinding._handlePointerEvent 
package:flutter/…/gestures/binding.dart:156
E/flutter ( 1365): #17     GestureBinding._flushPointerEventQueue 
package:flutter/…/gestures/binding.dart:102
E/flutter ( 1365): #18     GestureBinding._handlePointerDataPacket 
package:flutter/…/gestures/binding.dart:86
E/flutter ( 1365): #19     _rootRunUnary  (dart:async/zone.dart:1138:13)
E/flutter ( 1365): #20     _CustomZone.runUnary  (dart:async/zone.dart:1031:19)
E/flutter ( 1365): #21     _CustomZone.runUnaryGuarded  (dart:async/zone.dart:933:7)
E/flutter ( 1365): #22     _invoke1  (dart:ui/hooks.dart:273:10)
E/flutter ( 1365): #23     _dispatchPointerDataPacket  (dart:ui/hooks.dart:182:5)
E/flutter ( 1365):

我已經在互聯網上搜索過,但找不到解決方法,請問有其他人遇到過這種問題嗎?

您在方法initstate中有錯字。 它應該是initState ...您的初始化代碼沒有運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM