在空颤动上调用 SharedPreferences

Tab*_*san 5 sharedpreferences dart flutter

我构建了一个函数,用于在共享首选项中存储令牌,然后当我第一次运行我的应用程序出现错误时从服务器获取数据

以下 NoSuchMethodError 被抛出构建 AdminPage(dirty, state: AdminPageState#87bcd): flutter: The method '[]' was called on null. 颤振:接收方:空颤振:尝试调用:

然后应用程序运行良好

PS我的代码是

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;
}
Run Code Online (Sandbox Code Playgroud)

有什么用吗?

在调试模式下,错误出现在这一行

 final SharedPreferences prefs = await SharedPreferences.getInstance();
Run Code Online (Sandbox Code Playgroud)

错误 :

???小部件库捕获的异常 ????????????????????????????????????????????? ??????????????? 颤振:以下 NoSuchMethodError 被抛出构建 AdminPage(dirty, state: AdminPageState#7db9a): flutter: The method '[]' was called on null. flutter: Receiver: null flutter: 尝试调用: flutter: flutter: 抛出异常时,这是堆栈: flutter:

0 Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:50:5) 颤动:#1

AdminPageState.build (package:idb/pages/adminpage.dart:63:39) 抖动:

2 StatefulElement.build (package:flutter/src/widgets/framework.dart:3809:27) flutter: #3

ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3721:15) flutter: #4
Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #5 ComponentElement。 _firstBuild (package:flutter/src/widgets/framework.dart:3701:5) flutter: #6
StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3848:11) flutter: #7
ComponentElement.mount ( package:flutter/src/widgets/framework.dart:3696:5) flutter: #8
Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) flutter: #9
Element.updateChild (package: flutter/src/widgets/framework.dart:2753:12) flutter: #10
ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3732:16) flutter: #11
Element.rebuild (package:flutter/src/widgets/framework.dart:3547:5) flutter: #12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2286:33) flutter: #13
_WidgetsFlutterBinding&BindingBase&GestureBinding&BindingBase&GestureBinding&BindingServicesBindingServices并条机(包:扑/ SRC /部件/ binding.dart:676:20)扑:#14
_WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback(包:扑/ SRC /再现/ binding.dart:219:5)扑:#15
_WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback(包裹:颤振/src/scheduler/binding.dart:990:15) 颤振:#16
_WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame(包:扑/ SRC /调度器/ binding.dart:930:9)扑:#17
_WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame(包:扑/ SRC /调度器/ binding.dart:842:5)扑:#18
_invoke( dart:ui/hooks.dart:154:13) flutter: #19 _drawFrame (dart:ui/hooks.dart:143:3)

Kri*_*ews 1

可能是因为 jwToken 在初始化时为空。尝试为 jwToken 提供一个字符串值,例如“test”。