У меня есть бэкэнд PHP, и я использую его на своем локальном хосте, поэтому все в порядке, но у меня проблема в том, что URL-адрес изображения, который я получаю из API, является неправильным путем, и я не могу изменить его на стороне сервера, поэтому я решил исправить его на моя клиентская сторона
Я могу отобразить изображение на своем эмуляторе по этому пути:
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]}";
}
}
}
Im Flutter Dev. Я хочу решить эту проблему на стороне клиента, и я могу поделиться сценарием PHP, если вы скажете мне, где, возможно, я могу его найти (папки) @NishuthanS






Если API постоянно отправляет URL-адрес в "http://192.168.1.114/multi-r ..." в этом формате, то для этого есть решение, не знаю, является ли это умным ходом или чем-то еще, что вы ищете . Просто создайте функцию типа String, передайте URL-адрес из json url = changer(jsonMap["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;
}
Это решение будет работать, поместите эту функцию changer в свою модель, а в своей функции fromJson используйте ее следующим образом: url = changer(jsonMap["url"]);
Я пробовал это решение до того, как изложил вам проблему, но это не помогло. The instance member 'changer' can't be accessed in an initializer. Try replacing the reference to the instance member with a different expression @HuthaifaMuayyad @xahid_rocks
@HuthaifaMuayyad
В классе Media измените "String url;" на "String url = '';", попробуйте и сообщите о результате :)
По-прежнему выдает ошибку: / @xahid_rocks
The instance member 'changer' can't be accessed in an initializer. Try replacing the reference to the instance member with a different expression @xahid_rocks
Я решаю проблему с помощью создания вспомогательного класса, помещаю в него статическую функцию и вызываю ее в каждом виджете, который хочу отобразить (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; }
Я решаю проблему с помощью создания вспомогательного класса, помещаю в него статическую функцию и вызываю ее в каждом виджете, который хочу отобразить (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;
}
вы можете поделиться своим PHP-скриптом?