Flutter 在Flatter getx中对空值使用空检查运算符

Flutter 在Flatter getx中对空值使用空检查运算符,flutter,get,nullpointerexception,nul,flutter-getx,Flutter,Get,Nullpointerexception,Nul,Flutter Getx,虽然我在代码中找不到任何空值,但我的代码给出了用于空值的空检查运算符 我不知道是哪个屏幕导致了错误,但肯定是这两个屏幕中只有哪个是错误的 闪屏 导入'dart:async'; 进口“包装:颤振/材料.省道”; 导入“package:get/get.dart”; 导入“package:tajicEasy/ui/auth/landingPage.dart”; 导入“mySharedPreferences.dart”; 导入“onBoarding_page.dart”; 类SplashScreen扩展

虽然我在代码中找不到任何空值,但我的代码给出了用于空值的
空检查运算符

我不知道是哪个屏幕导致了错误,但肯定是这两个屏幕中只有哪个是错误的

  • 闪屏
  • 导入'dart:async';
    进口“包装:颤振/材料.省道”;
    导入“package:get/get.dart”;
    导入“package:tajicEasy/ui/auth/landingPage.dart”;
    导入“mySharedPreferences.dart”;
    导入“onBoarding_page.dart”;
    类SplashScreen扩展StatefulWidget{
    @凌驾
    _SplashScreenState createState()=>\u SplashScreenState();
    }
    类的状态扩展了状态{
    @凌驾
    void initState(){
    super.initState();
    加载屏幕();
    myAppState();
    }
    bool isFirstTimeOpen=false;
    myAppState(){
    MySharedPreferences.instance
    .getBooleanValue(“首次打开”)
    .然后((值)=>设置状态(){
    isFirstTimeOpen=值;
    }));
    }
    @凌驾
    小部件构建(构建上下文){
    返回脚手架(
    背景颜色:Colors.white,
    正文:中(
    子:Image.asset(
    “assets/images/logo.png”,
    宽度:double.infinity,
    ),
    ),
    );
    }
    Future loadSplashScreen()异步{
    返回计时器(持续时间(秒数:3),onDoneLoadind);
    }
    onDoneLoadind()异步{
    Get.offAll(()=>isFirstTimeOpen?LandingPage():OnBoardingPage());
    }
    }
    
  • 加载屏幕
  • import'包装:flift/cupertino.dart';
    导入“package:get/get.dart”;
    导入“package:tajicEasy/controller/authController.dart”;
    导入“package:tajicEasy/controller/userController.dart”;
    导入“package:tajicEasy/ui/auth/login_in.dart”;
    导入“package:tajicEasy/ui/widgets/bottomNavigationBar.dart”;
    类LandingPage扩展了GetWidget{
    @凌驾
    小部件构建(构建上下文){
    返回GetX(initState:maininit(),
    建筑商:(){
    印刷品(“此处1”);
    if(Get.find().user!=null){
    印刷品(“此处1”);
    返回登录名();
    }否则{
    印刷品(“此处1”);
    返回AppMain();
    }
    });
    }
    maininit(){
    打印(“此处”);
    Get.put(UserController());
    打印(“此处”);
    Get.put(AuthController());
    打印(“此处”);
    }
    }
    
    我已尝试放置
    loadSplashScreen()在设置状态之后,在
    myAppState()
    但在那之后,我得到了同样的错误


    检查
    isFirstTimeOpen
    是否不为null

    尝试在启动屏幕上使用GetWidget或使用globalkey或两者兼用

    这是因为我们使用了
    bang
    操作符,即
    。但这里似乎没有这样的代码。检查其他widgetCheck此(
    bang
    )运算符未在任何widgetCheck中使用如果这有助于不工作,则会引发相同的错误
    import 'dart:async';
    
    import 'package:flutter/material.dart';
    import 'package:get/get.dart';
    import 'package:tajicEasy/ui/auth/landingPage.dart';
    import 'mySharedPreferences.dart';
    import 'onBoarding_page.dart';
    
    class SplashScreen extends StatefulWidget {
      @override
      _SplashScreenState createState() => _SplashScreenState();
    }
    
    class _SplashScreenState extends State<SplashScreen> {
      @override
      void initState() {
        super.initState();
        loadSplashScreen();
        myAppState();
      }
    
      bool isFirstTimeOpen = false;
    
      myAppState() {
        MySharedPreferences.instance
            .getBooleanValue("firstTimeOpen")
            .then((value) => setState(() {
                  isFirstTimeOpen = value;
                }));
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.white,
          body: Center(
            child: Image.asset(
              "assets/images/logo.png",
              width: double.infinity,
            ),
          ),
        );
      }
    
      Future<Timer> loadSplashScreen() async {
        return Timer(Duration(seconds: 3), onDoneLoadind);
      }
    
      onDoneLoadind() async {
        Get.offAll(() => isFirstTimeOpen ? LandingPage() : OnBoardingPage());
      }
    }
    
    import 'package:flutter/cupertino.dart';
    import 'package:get/get.dart';
    import 'package:tajicEasy/controller/authController.dart';
    import 'package:tajicEasy/controller/userController.dart';
    import 'package:tajicEasy/ui/auth/login_in.dart';
    import 'package:tajicEasy/ui/widgets/bottomNavigationBar.dart';
    
    class LandingPage extends GetWidget<AuthController> {
      @override
      Widget build(BuildContext context){
        return GetX(initState:  maininit(),
            builder: (_) {
          print("here1");
          if (Get.find<AuthController>().user!=null) {
            print("here1");
            return Login();
          } else {
            print("here1");
            return AppMain();
          }
        });
      }
    
      maininit() {
        print("here");
       Get.put<UserController>(UserController());
        print("here");
        Get.put<AuthController>(AuthController());
        print("here");
      }
    }