我构建了一个函数,用于将令牌存储在共享首选项中,然后在第一次运行应用程序时从服务器获取数据。
下面的NoSuchMethodError被抛出构建AdminPage(脏,状态: AdminPageState#87bcd):flutter:方法'[]‘在null上被调用。颤振:接收器:空颤振:尝试调用:
然后应用程序就可以正常工作了
我的代码是
Future<Map<String, dynamic>> getCards(String userid) async {
BuildContext context;
String jWTtoken = '';
try {
final SharedPreferences prefs = await SharedPreferences.getInstance();
// prefs = await SharedPreferences.getInstance();
jWTtoken = prefs.getString('token');
tokenfoo();
} catch (e) {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (BuildContext context) => AuthPage()),
);
}
final Map<String, dynamic> authData = {
'Userid': '261',
// 'Email':_formData['Email'],
// 'Password':_formData['Password'],
};
final http.Response response = await http.post(
'hurl',
body: json.encode(authData),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + jWTtoken
});
final Map<String, dynamic> responseData = json.decode(response.body);
if (responseData["StatusCode"] == 200) {
null;
} else if (responseData["StatusCode"] == 401) {
print(responseData);
Logout();
} else {
print(responseData);
Logout();
null;
}
return responseData;
}有什么问题吗?
在调试模式中,错误出现在以下行中
final SharedPreferences prefs = await SharedPreferences.getInstance();错误:
小部件库╞═══════════════════════════════════════════════════════════flutter捕获的══╡异常:下面的NoSuchMethodError被抛出构建AdminPage(脏,状态: AdminPageState#7db9a):══╡:方法'[]‘在null上被调用。颤振:接收者:空颤振:尝试调用:颤振:颤振:当异常被抛出时,这是堆栈:颤振: 0 Object.noSuchMethod (dart:core/运行时/libobject_patch.dart:50:5)颤振:#1 AdminPageState.build (软件包:idb/page/adminpage.dart:63:39)颤振: 2 (package:flutter/src/widgets/framework.dart:3809:27) StatefulElement.build颤振:#3 (package:flutter/src/widgets/framework.dart:3721:15) ComponentElement.performRebuild颤振:#4 (package:flutter/src/widgets/framework.dart:3547:5)颤振:#5 (package:flutter/src/widgets/framework.dart:3701:5)颤振:#6 (package:flutter/src/widgets/framework.dart:3848:11) StatefulElement._firstBuild颤振:#7 (package:flutter/src/widgets/framework.dart:3696:5) ComponentElement.mount颤振:#8 (package:flutter/src/widgets/framework.dart:2950:14) Element.inflateWidget颤振:#9 (package:flutter/src/widgets/framework.dart:2753:12) Element.updateChild颤振:#10 (package:flutter/src/widgets/framework.dart:3732:16) ComponentElement.performRebuild颤振:#11 (package:flutter/src/widgets/framework.dart:3547:5)颤振:#12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2286:33)颤振:#13 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:676:20)颤振:#14 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:219:5)颤振:#15 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)颤振:#16 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)颤振:#17 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)颤振:#18 _invoke (飞镖:ui/Hooks.Dart:154:13)颤振:#19 _drawFrame (飞镖:ui/Hooks.Dart:143:3)
发布于 2019-06-11 18:36:53
可能是因为初始化时jwToken是空的。尝试给jwToken一个字符串值,比如"test“。
发布于 2021-12-22 09:54:32
创建要全局使用的全局类:
final SharedPreferences prefs = await SharedPreferences.getInstance();
static Future init() async {
pref = await SharedPreferences.getInstance();
}https://stackoverflow.com/questions/55373832
复制相似问题