WITCH上的颤动多个条件将使用共享首选项显示在主屏幕上 [英] Flutter multiple conditions on witch is going to be home screen using Shared Prefs

查看:23
本文介绍了WITCH上的颤动多个条件将使用共享首选项显示在主屏幕上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个登录屏幕,在用户登录后,他会进入工作屏幕,如果用户登录后离开应用程序并回来,我制作了主页屏幕,它是使用共享首选项的工作屏幕,但现在我有另一个屏幕,它是停止工作屏幕,我所做的是用户转到这个工作屏幕并开始工作,当他在工作屏幕上按下开始工作时,它会导航到停止工作屏幕,并有一个停止工作的按钮,它会将他导航到工作屏幕我现在需要的是,如果用户按下开始工作的工作屏幕,并离开应用程序,我希望主屏幕是停止工作屏幕,而不是工作屏幕。因此,如果用户登录并正在工作(按下开始工作按钮),那么我希望停止工作屏幕成为主屏幕。任何帮助都将不胜感激。此外,当用户按下停止工作并退出应用程序时,应该会将他送到工作屏幕,而不是停止工作屏幕

// Start Working button
                           ElevatedButton(
                              child: loading
                                  ? const Loading()
                                  : const Text(
                                      'Start Working',
                                      style: TextStyle(fontSize: 20),
                                    ),
                              style: ElevatedButton.styleFrom(
                                  primary: Colors.teal),
                              onPressed: () async {
                                SharedPreferences prefs =
                                    await SharedPreferences.getInstance();

// End Work Button

                   ElevatedButton(
                    onPressed: () {
                      putEndWork();
                      Navigator.pushReplacement(
                        context,
                        MaterialPageRoute(
                          builder: (context) => const WorkingScreen(),
                        ),
                      );
                    },
                    child: const Text(
                      'End Work',

// main.dart

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var authorization = prefs.getString('authorization');
  runApp(
    MaterialApp(
      debugShowCheckedModeBanner: false,
      home: authorization == null ? const LoginScreen() : const WorkingScreen(),
    ),
  );
}

推荐答案

bjw回答的大体思路应该是可行的。

我希望重新声明var screenToShow的部分会导致问题:

  var screenToShow = WorkingScreen();
  if (authorization == null) {
      var screenToShow = LoginScreen();
  } else if (isWorking!) {
      var screenToShow = StopWorkingScreen();
  }

使用如下帮助器尝试相同策略:

Widget getScreenFromIsWorking([String? isWorking]) {
  if (isWorking != null) {
    return StopWorkingScreen();
  }
  return WorkingScreen();
}

在Main中调用类似:

var screenToShow = authorization == null ? LoginScreen() : getScreenFromIsWorking(isWorking);

这篇关于WITCH上的颤动多个条件将使用共享首选项显示在主屏幕上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆