【问题标题】:Flutter json Unexpected character at 1Flutter json 1处的意外字符
【发布时间】:2021-08-29 13:28:20
【问题描述】:

我正在处理一个项目,在尝试使用 json.decode 方法解码一些 JSON 数据时遇到此错误。

错误

E/flutter (26652): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] 未处理异常:FormatException:意外字符(在字符 1) E/flutter (26652): 'StreamedResponse' 的实例 E/颤振(26652):^ E/颤振(26652): E/flutter (26652): #0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5) E/flutter (26652): #1 _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1271:9) E/flutter (26652): #2 _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:936:22) E/flutter (26652): #3 _parseJson (dart:convert-patch/convert_patch.dart:40:10) E/flutter (26652): #4 JsonDecoder.convert (dart:convert/json.dart:506:36) E/flutter (26652): #5 JsonCodec.decode (dart:convert/json.dart:157:41) E/颤动​​(26652):#6

userModel.dart

import 'dart:convert';

import 'package:shared_preferences/shared_preferences.dart';

class UserModel {
  String id;
  String name;
  String email;

  UserModel({this.id, this.name, this.email});

  static UserModel sessionUser;

  factory UserModel.fromjson(Map<String, dynamic> i) =>
      UserModel(
        id: i['id'], 
        name: i['name'], 
        email: i['email']
        );

  Map<String, dynamic> toMap() => {
    'id': id, 
    'name': name, 
    'email': email
    };

  static void saveUser(UserModel user) async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    var data = jsonEncode(user.toMap());
    pref.setString('user', data);
    // ignore: deprecated_member_use
    pref.commit();
  }

  static  void getUser() async {
    SharedPreferences pref = await SharedPreferences.getInstance();
    String data = pref.getString('user');
    if (data != null) {
      var decode = json.decode(data); // <------ error here
      if (data.isNotEmpty) {
        var user = UserModel.fromjson(decode);
        sessionUser = user;
      }
    } else {
      sessionUser = null;
    }
  }

  static void logOut() async {
    SharedPreferences p = await SharedPreferences.getInstance();
    p.setString('user', "");
    sessionUser = null;
    // ignore: deprecated_member_use
    p.commit();
  }
}

如您所见,错误发生在 getUser 方法上,同时使用 SharedPreferences 解码保存的变量

HomePage.dart

import 'package:flutter/material.dart';
import 'package:mostapha_app/ka/screens/sign_in/components/sign_form.dart';
import 'package:mostapha_app/models/userModel/userModel.dart';
import 'package:mostapha_app/screens/Home/home.dart';
import 'package:mostapha_app/screens/Home/welcom.dart';
import 'package:mostapha_app/screens/autntification/UserRegister.dart';
import 'package:mostapha_app/screens/autntification/login.dart';
import 'package:mostapha_app/screens/autntification/conducteurRegister.dart';

class HomePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool visibel = true, login = false;
  isconnected() async {
    // ignore: await_only_futures
    await UserModel.getUser();
    if (UserModel.sessionUser == null) {
      setState(() {
        login = false;
      });
    } else {
      setState(() {
        login = true;
      });
    }
  }

  tooggle() {
    setState(() {
      visibel = !visibel;
    });
  }

  isLogin() {
    setState(() {
      login = !login;
    });
  }

  @override
  void initState() {
    super.initState();
    isconnected();
  }

  @override
  Widget build(BuildContext context) {
    return login
        ? Home(login: isLogin)
        : visibel
            ? 
            LogIn(tooggle, isLogin)
            : UserRegester(tooggle, isLogin);
  }
}

如果有人知道为什么会发生此错误,我将不胜感激。

【问题讨论】:

    标签: json flutter dart sharedpreferences


    【解决方案1】:

    我第一次开始 Flutter 编程时遇到了同样的问题。

    我认为您的代码可能是正确的。我不确定你的代码,它似乎是正确的。但我绝对确定您的数据一定不正确。我有同样的错误,我终于找到了问题的根源。您必须检查数据来源。您可能在用户保存部分出错?

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 2019-09-04
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 2022-01-18
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多