从最近使用的应用程序中删除该应用程序后,我试图返回到同一屏幕,但即使我已经登录,它也总是带我回到注册屏幕

问题描述 投票:0回答:1

如果登录,则无法让用户返回到上一个屏幕,并且一旦使用共享首选项和提供程序从后台删除两个单独容器的点击,并且基于该点击,用户将登录并验证哪个配置文件的乐趣用户已登录,一旦用户重新打开应用程序并且仅在此时登录,就会显示该特定页面。

我尝试了很多,并在我的启动画面中为这样的事情创造了乐趣,但没有按预期工作,请查看这个。

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../Provider/LogicForTappedContainer.dart';

class Onboard extends StatefulWidget {
  const Onboard({super.key});

  @override
  State<Onboard> createState() => OnboardState();
}

class OnboardState extends State<Onboard> {
  //check ifLoggedIn state
  Future<void> check(LogicContainer provider)async{
    var sharedPref = await SharedPreferences.getInstance();
    sharedPref.setBool(OnboardState.KEYLOGIN, false);
    bool? isLoggedIn = sharedPref.getBool(OnboardState.KEYLOGIN);
    var value=provider.tappedContainerIndex;
    print('isLoggedIn: $isLoggedIn');
    print('value: $value');
    if(isLoggedIn==true && value==0){
      context.go('/userMainScreen');
    }
    else if(isLoggedIn==true && value==1){
      context.go('/panditchat');
    }
    else{
      context.go('/signup');
    }
  }
  //shared pref
  static var KEYLOGIN = "login";
  double opacity1 = 0.0;
  double opacity2 = 0.0;

  @override
  void initState() {
    whereToGo();
    Future.delayed(const Duration(milliseconds: 500), () {
      setState(() {
        opacity1 = 1.0;
      });
    });

    Future.delayed(const Duration(milliseconds: 1000), () {
      setState(() {
        opacity2 = 1.0;
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        body: Consumer<LogicContainer>(builder: (context, provider, child) {
          return Stack(children: [
            Image.asset(
              "assets/logos/Temple.jpg",
              fit: BoxFit.fitHeight,
              height: double.infinity,
            ),
            Positioned(
              top: MediaQuery.of(context).size.height * 0.83,
              left: 80.w,
              child: Column(
                children: [
                  AnimatedOpacity(
                    opacity: opacity1,
                    duration: const Duration(milliseconds: 500),
                    child: Text(
                      "  Welcome",
                      style: GoogleFonts.signikaNegative(
                        fontSize: 40,
                        color: Colors.white,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                  const SizedBox(height: 5),
                  AnimatedOpacity(
                    opacity: opacity2,
                    duration: const Duration(milliseconds: 500),
                    child: Text(
                      "  Worshipper",
                      style: GoogleFonts.signikaNegative(
                        fontSize: 40,
                        color: Colors.white,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ]);
        }));
  }
  void whereToGo() async {
    Timer(const Duration(seconds: 3), () {
      LogicContainer myLogicContainer=LogicContainer();
    check(myLogicContainer);
    });
  }
}

flutter sharedpreferences provider
1个回答
0
投票

这是因为您始终在

KEYLOGIN
功能中将
false
设置为
check

在这一行

 sharedPref.setBool(OnboardState.KEYLOGIN, false);

从代码中删除上面的行,它将正常工作。

使用此代码

Future<void> check(LogicContainer provider)async{
var sharedPref = await SharedPreferences.getInstance();
bool? isLoggedIn = sharedPref.getBool(OnboardState.KEYLOGIN);
var value=provider.tappedContainerIndex;
print('isLoggedIn: $isLoggedIn');
print('value: $value');
if(isLoggedIn==true && value==0){
  context.go('/userMainScreen');
}
else if(isLoggedIn==true && value==1){
  context.go('/panditchat');
}
else{
  context.go('/signup');
}
}
© www.soinside.com 2019 - 2024. All rights reserved.