Flutter / Dart получает изображение / данные из API на основе токена входа пользователя

Я пытаюсь получить некоторые данные и изображение из моего собственного 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

См. также:  реагировать на собственный логин, api, jwt, auth, базовый
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Flt

    Согласно вашему журналу ошибок ошибка находится на _getUserInfo. Здесь, когда вы читаете значение user, оно может быть нулевым. Поэтому, когда вы пытаетесь использовать jsondecode, он вылетает из-за нулевого значения. Пожалуйста, отладьте, есть ли у вас какое-либо значение в общем хранилище для ключа user или нет. Также рекомендуется добавить несколько проверок, прежде чем работать с недавно полученным значением.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: