从http请求加载图像

时间:2019-04-02 10:07:17

标签: http dart flutter filemaker

我正在开发必须获得不同价值的个人资料卡。我正在获得所有的价值,但我也想加载网络映像。我使用的是FileMaker Server,我已经注意到需要Coockies来加载它。当我发出请求副本时,将图像URL粘贴到我的浏览器中即可加载。但是每当我将其加载到应用程序中时,我的图像就会获得401 statusCode。

我只尝试了有效的有效网络映像,我已经阅读了一些有关Coockies的信息,但是我不确定是否需要使用它们以及如何使用它们。我也觉得很奇怪,每当我将图像加载到浏览器中时,它都可以运行,但不能在我的应用程序上运行。

未来的makeRequest()异步{     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);
});

Value i get in the terminal

我希望我可以使用var $ profielfoto将图像加载到networkimage中。我不知道该如何处理这些库克犬,或者也许有一种更简单的方法。希望有人可以帮助我,如果我需要提供有关服务器或其他任何信息的信息,请告诉我。 ;)

2 个答案:

答案 0 :(得分:0)

几件事。请不要在setState中放置任何类型的繁重处理程序

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

  

通常建议仅将setState方法用于   包装对状态的实际更改,而不是可能的任何计算   与变更相关联。例如,此处是   构建函数增加,然后将更改写入磁盘,   但只有增量包装在setState中:

TextField告诉窗口小部件何时需要重绘

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

import 'package:flutter/material.dart';

class TextFieldInput extends StatefulWidget {
  @override
  TextFieldInputState createState() => TextFieldInputState();
}

class TextFieldInputState extends State<TextFieldInput> {
  TextEditingController timerController;

  @override
  void dispose() {
    timerController.dispose();
    super.dispose();
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Timer Picker"),
        backgroundColor: Colors.deepPurple,
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: TextField(
          keyboardType: TextInputType.number,
          decoration: InputDecoration(
            icon: Icon(Icons.timer),
            hintText: "Please enter timer value in minutes"
          ),
          controller: timerController,
          onSubmitted: (v) => timerController.text = v,
        ),
      ),
    );
  }
}

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

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

您有两种选择可以从网络上抓取图像。我相信我提出了一种方法。

答案 1 :(得分:0)

授权令牌必须是问题。当用户登录时,安全服务器将返回此令牌。然后所有后续请求都必须在“授权标头”中包含此令牌。如果不存在或不正确,服务器将返回401