【发布时间】:2026-01-25 15:30:01
【问题描述】:
我有一个功能可以询问你是否有令牌 apikey。但是当我试图在那里获取一些文本字段时,我无法在其中发短信(总是刷新导致我认为的未来构建器)。 下面是函数。
Future<String> getApiKey() async {
WidgetsFlutterBinding.ensureInitialized();
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString("apikey");
}
FutureBuilder<String>(
future: getApiKey(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: CupertinoActivityIndicator(),
);
default:
if (snapshot.hasError) {
print("has error");
return Center(child: Text('Error: ${snapshot.error}'));
} else if (snapshot.data == null) {
print("not login");
// return Container();
return Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset("assets/image/images/nodata.svg",
height: 150),
SizedBox(height: 15),
Text(
"no data",
style: TextStyle(
color: baseColor,
fontSize: 18,
fontWeight: FontWeight.w500,
fontFamily: "Sofia"),
),
],
),
);
} else {
return FutureBuilder<List<LineUpListModel>>(
future: prov.setLineUpList(prov),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: CupertinoActivityIndicator(),
);
default:
if (snapshot.hasError)
return Center(
child: Text('Error: ${snapshot.error}'));
else if (snapshot.data == null)
// return Container();
return Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
"assets/image/images/nodata.svg",
height: 150),
SizedBox(height: 15),
Text(
"no data",
style: TextStyle(
color: baseColor,
fontSize: 18,
fontWeight: FontWeight.w500,
fontFamily: "Sofia"),
),
],
),
);
else {
print(prov.getMyProfileModel.apiKey.toString());
return TextField();
}
}
},
);
}
}
},
),
如何在没有来自 Futurebuilder 的刷新中断的情况下输入 TextField?我应该解决什么问题?
【问题讨论】: