【发布时间】:2021-08-23 15:32:18
【问题描述】:
我是 Flutter 的新手,我在这里尝试检查 User Preferences Key 是否存在(来自服务器 API),如果存在,请转到已登录界面,否则请登录。
我在使用 Future、async 和所有这些东西时遇到了很多麻烦,所以我可能犯了一个愚蠢的错误,但我找不到它。
无论如何,我得到的错误是
在构建 FutureBuilder(dirty, state: _FutureBuilderState#5ce9a) 时抛出了以下断言: 在构建期间调用 setState() 或 markNeedsBuild()。
有人可以帮帮我吗?
谢谢!
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Startup extends StatefulWidget {
const Startup({Key? key}) : super(key: key);
@override
State<Startup> createState() => _StartupState();
}
class _StartupState extends State<Startup> {
Future<String> isLoggedIn() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
if (prefs.getString("key") != null) {
return "/MyTasks";
} else {
return "/Login";
}
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: isLoggedIn(),
builder: (context, snapshot) {
if (snapshot.hasData) {
Navigator.of(context).pushReplacementNamed(snapshot.data.toString());
} else if (snapshot.hasError) {
Text(snapshot.error.toString());
}
return const CircularProgressIndicator();
},
);
}
}
【问题讨论】:
标签: flutter