WITCH上的颤动多个条件将使用共享首选项显示在主屏幕上 [英] Flutter multiple conditions on witch is going to be home screen using Shared Prefs
本文介绍了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屋!
查看全文