Исправить флаттер / дротик модели

У меня есть бэкэнд 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]}";
    }
  }
}

вы можете поделиться своим PHP-скриптом?

Nishuthan S 30.03.2021 08:13

Im Flutter Dev. Я хочу решить эту проблему на стороне клиента, и я могу поделиться сценарием PHP, если вы скажете мне, где, возможно, я могу его найти (папки) @NishuthanS

Yahya Abunada 30.03.2021 12:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если 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"]);

Huthaifa Muayyad 30.03.2021 08:32

Я пробовал это решение до того, как изложил вам проблему, но это не помогло. 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

Yahya Abunada 30.03.2021 12:14

@HuthaifaMuayyad

Yahya Abunada 30.03.2021 12:15

В классе Media измените "String url;" на "String url = '';", попробуйте и сообщите о результате :)

xahid_rocks 30.03.2021 12:49

По-прежнему выдает ошибку: / @xahid_rocks

Yahya Abunada 30.03.2021 12:57
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
Yahya Abunada 30.03.2021 13:03

Я решаю проблему с помощью создания вспомогательного класса, помещаю в него статическую функцию и вызываю ее в каждом виджете, который хочу отобразить (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; }

Yahya Abunada 31.03.2021 11:19
Ответ принят как подходящий

Я решаю проблему с помощью создания вспомогательного класса, помещаю в него статическую функцию и вызываю ее в каждом виджете, который хочу отобразить (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;
  }

Другие вопросы по теме