修复模型颤振/飞镖

时间:2021-03-30 04:47:17

标签: php flutter dart

我有一个 PHP 后端,我在我的本地主机上使用它,所以一切正常,但我有一个问题,我从 API 获得的图像 URL 是一个错误的路径,我无法从服务器端更改它,所以我决定在我的客户端修复它

我可以使用此路径在我的模拟器上显示图像:

http://10.0.2.2:8000/storage/app/public/171/conversions/api-icon.jpg

API 给了我这条路径

http://192.168.1.114/multi-restaurants/public/storage/app/public/171/conversions/api-icon.jpg

我通过创建一个改变路径的函数来修复它,但它需要做很多工作,就像我应该把这个函数放在我想要显示图像的每个地方!!

我确定有一种方法可以在我收到 api 时直接从模型更改路径 这是我的模型

class Media {
  String id;
  String name;
  String url;
  String thumb;
  String icon;
  String size;

  Media();

  Media.fromJSON(Map<String, dynamic> jsonMap)
      : id = jsonMap['id'].toString(),
        name = jsonMap['name'],
        url =  jsonMap["url"] ,
        thumb = jsonMap['thumb'],
        icon = jsonMap['icon'],
        size = jsonMap['formated_size'];

我在每个类中使用的这个函数来更改路径 Url

String changepath(String uuu) {
    final uri = Uri.parse(uuu);
    print("This is $uri");
    if (uri.path.contains("multi-restaurants")) {
      print("http://10.0.2.2:8000/${uri.pathSegments[2]}/${uri.pathSegments[3]}/${uri.pathSegments[4]}/${uri.pathSegments[5]}/${uri.pathSegments[6]}");
      return"http://10.0.2.2:8000/${uri.pathSegments[2]}/${uri.pathSegments[3]}/${uri.pathSegments[4]}/${uri.pathSegments[5]}/${uri.pathSegments[6]}";
    }
  }
}

2 个答案:

答案 0 :(得分:0)

如果API以这种格式不断发送“http://192.168.1.114/multi-r ...”中的URL,那么就有解决办法了,不知道是不是聪明之举你正在寻找。只需创建字符串类型的函数,从 json url = changer(jsonMap["url"]); 传递 url 并使用它来将 URL 转换为所需的 URL。

String changer(String _string1) {
  String _string2 = _string1.replaceAll("http://192.168.1.114/multi-restaurants/public", "http://10.0.2.2:8000");
  return _string2;
}

答案 1 :(得分:0)

我通过创建一个帮助类解决了这个问题,并在其中放置了一个静态函数,并在我想要显示的每个小部件中调用它(Url)

 static String changer(String _string1) {
    String _string2 = _string1.replaceAll(
        "http://192.168.1.114/multi-restaurants/public",
        "http://10.0.2.2:8000");
    print(_string2);
    return _string2;
  }