Я пытаюсь получить некоторые данные и изображение из моего собственного Api, созданного с помощью laravel. Перед отображением изображения требуется маркер аутентификации. Я не уверен, почему изображение не отображается. Нужна помощь в этом. Мне нужно получить изображение карты пользователя с помощью следующей конечной точки (/ api / card). Метод — GET, и требуется токен JWT.
Я попытался использовать if else case, если пользователь успешно войдет в систему, он будет перенаправлен на страницу карты участника, к сожалению, он все еще показывает 401 ошибку аутентификации 401 failed.
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:_membership/Login_page.dart';
import 'package:_membership/homeScreen.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:http/http.dart' as http;
import 'saveCurrentLogin.dart';
class GetMemberCard extends StatefulWidget {
@override
_GetMemberCardState createState() => _GetMemberCardState();
}
class _GetMemberCardState extends State<GetMemberCard> {
bool _isLoggedIn = false;
@override
void initState() {
_checkIfLoggedIn();
super.initState();
}
void _checkIfLoggedIn() async{
// check if token is there
SharedPreferences localStorage = await SharedPreferences.getInstance();
var token = localStorage.getString('token');
if(token!= null){
setState(() {
_isLoggedIn = true;
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: _isLoggedIn ? HomeScreen() : CardHome(),
),
);
}
}
class CardHome extends StatefulWidget {
@override
_CardHomeState createState() => _CardHomeState();
}
class _CardHomeState extends State<CardHome> {
var userData;
@override
void initState() {
_getUserInfo();
super.initState();
}
void _getUserInfo() async {
SharedPreferences localStorage = await SharedPreferences.getInstance();
var userJson = localStorage.getString('user');
var user = json.decode(userJson);
setState(() {
userData = user;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[200],
body: Container(
width: 200,
height: 200,
child: Image.network(userData != null ? '${userData['token']}' : 'https://example/api/card',
)));
}
}
Журнал ошибок прилагается
Performing hot reload...
Syncing files to device Android SDK built for x86...
Reloaded 35 of 732 libraries in 483ms.
E/flutter (22764): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The getter 'length' was called on null.
E/flutter (22764): Receiver: null
E/flutter (22764): Tried calling: length
E/flutter (22764): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (22764): #1 _parseJson (dart:convert-patch/convert_patch.dart:28:28)
E/flutter (22764): #2 JsonDecoder.convert (dart:convert/json.dart:493:36)
E/flutter (22764): #3 JsonCodec.decode (dart:convert/json.dart:151:41)
E/flutter (22764): #4 _CardHomeState._getUserInfo (package:pkc/pkc_membership/membership_card.dart:66:21)
E/flutter (22764): <asynchronous suspension>
E/flutter (22764): #5 _CardHomeState.initState (package:pkc/pkc_membership/membership_card.dart:59:5)
E/flutter (22764): #6 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4068:58)
E/flutter (22764): #7 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #9 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (22764): #11 Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (22764): #12 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (22764): #13 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (22764): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (22764): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (22764): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #20 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4314:11)
E/flutter (22764): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #22 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5233:32)
E/flutter (22764): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #25 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (22764): #26 Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (22764): #27 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (22764): #28 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4088:11)
E/flutter (22764): #29 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #30 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #31 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #32 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (22764): #33 Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (22764): #34 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (22764): #35 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #36 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #37 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #38 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3961:16)
E/flutter (22764): #39 Element.rebuild (package:flutter/src/widgets/framework.dart:3738:5)
E/flutter (22764): #40 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3924:5)
E/flutter (22764): #41 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4088:11)
E/flutter (22764): #42 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3919:5)
E/flutter (22764): #43 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3101:14)
E/flutter (22764): #44 Element.updateChild (package:flutter/src/widgets/framework.dart:2904:12)
E/flutter (22764): #45 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5127:14)
E/flutter (22764): #46 Element.inflateWidget (packag
Согласно вашему журналу ошибок ошибка находится на
_getUserInfo
. Здесь, когда вы читаете значение user, оно может быть нулевым. Поэтому, когда вы пытаетесь использовать jsondecode, он вылетает из-за нулевого значения. Пожалуйста, отладьте, есть ли у вас какое-либо значение в общем хранилище для ключаuser
или нет. Также рекомендуется добавить несколько проверок, прежде чем работать с недавно полученным значением.