Загрузка изображения из http запроса - PullRequest
0 голосов
/ 02 апреля 2019

Я разрабатываю карточку профиля, которая должна иметь разные значения. Я получаю все значения, но я также хочу загрузить образ сети. Я использую сервер FileMaker, и я заметил, что мне нужны куки для загрузки этого. Когда я делаю копию запроса, вставьте ссылку на изображение в мой браузер, он просто загружается. Но всякий раз, когда я загружаю его в свое приложение, я получаю код статуса 401 с моим изображением.

Я попробовал только действующий сетевой образ, который работает, я кое-что прочитал о куки, но я не уверен, нужно ли мне их использовать и как. Я также нахожу странным, что всякий раз, когда я загружаю изображение в браузер, оно работает, но не в моем приложении.

Будущее makeRequest () async { var url4 = "https://fms.xxxxxx.nl/fmi/data/v1/databases/Roscom Управление системой / макеты / medewerker pa api / _find"; var body = json.encode ({ "запрос": [ {"Emailadres (1)": "xxxx@xxx.nl"} ], });

Map<String, String> headers = {
  'Content-type': 'application/json',
  'Accept': 'application/json',
  "Authorization":
      'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
};

var response = await http.post(url4, body: body, headers: headers);
setState(() {
  var responseJson = json.decode(response.body);
  data = responseJson['response']['data'][0];
  profielfoto = data['fieldData']['iMedewerker Foto'];

  print(profielfoto);
});

Значение, которое я получаю в терминале

Я ожидаю, что смогу загрузить изображение в сетевое изображение только с помощью переменной $ profielfoto. Я не знаю, что делать с конфетами или, может быть, есть гораздо более простой способ сделать это. Я надеюсь, что кто-то может помочь мне, пожалуйста, дайте мне знать, если мне нужно предоставить больше информации о сервере или что-нибудь еще. ;)

1 Ответ

0 голосов
/ 02 апреля 2019

Несколько вещей. Пожалуйста, не помещайте никакой тяжелой обработки в setState

https://docs.flutter.io/flutter/widgets/State/setState.html

Обычно рекомендуется использовать метод setState только для оберните фактические изменения в состояние, а не любые вычисления, которые могли бы быть связанным с изменением. Например, здесь значение, используемое функция сборки увеличивается, а затем изменение записывается на диск, но только инкремент заключен в setState:

setState сообщает виджету, когда его нужно перерисовать

https://flutter.dev/docs/cookbook/images/network-image

String _profilePhoto = "";
//Change await into an async operation
http.post(url4, body: body, headers: headers).then( (response) {
   var responseJson = json.decode(response.body);


   print(data['fieldData']['iMedewerker Foto']);
   setState(() {

      _data = responseJson['response']['data'][0];
     _profilePhoto = data['fieldData']['iMedewerker Foto'];
   });
})

Widget build(BuildContext context){
      //Check if string is empty
     if ( _profilePhoto == "" ){
          return CircularProgressIndicator();
     }else {
           return Image.network( _profilePhoto );
     }
}

https://flutter.dev/docs/cookbook/images/network-image

https://pub.dartlang.org/packages/cached_network_image

У вас есть два варианта получения изображений из сети. Я считаю, что я представил один способ.

...