如何解决Fluter:无法从构建小部件中的SharedPreferences获取字符串值
我是新手,我需要在SharedPreferences中拥有一个userName字符串值,但是它返回Future而不是string。 我已经浏览了许多帖子,但是找不到适合我的解决方案。(也许我无法完全理解它。)
class PickupLayout extends StatelessWidget {
final Widget scaffold;
final CallMethods callMethods = CallMethods();
PickupLayout({
@required this.scaffold,});
getPref() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String auth = prefs.getString("USERNAMEKEY");
return auth;
}
Future<String> _fetchAllData() async {
return HelperFunctions.getUserNameSharedPreference();
}
@override
Widget build(BuildContext context) {
// final UserProvider userProvider = Provider.of<UserProvider>(context);
Constants.myName = await HelperFunctions.getUserNameSharedPreference();
return (HelperFunctions.getUserNameSharedPreference() != null)
? StreamBuilder<DocumentSnapshot>(
stream: callMethods.callStream(userName: getPref()),builder: (context,snapshot) {
if (snapshot.hasData && snapshot.data.data != null) {
Call call = Call.fromMap(snapshot.data.data);
print("stream builder working!!!!!");
if (!call.hasDialled) {
return PickupScreen(call: call);
}
}
return scaffold;
},)
: Scaffold(
body: Center(
child: CircularProgressIndicator(),),);
}
}
我需要在callMethods.callStream(userName: "userName")
中传递用户名
HelperFunctions.getUserNameSharedPreference()
只是返回Future String的方法
static Future<String> getUserNameSharedPreference() async{
SharedPreferences preferences = await SharedPreferences.getInstance();
return await preferences.getString(sharedPreferenceUserNameKey);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。