Передача изображений между экранами в flutter с pushNamed

#flutter #flutter-navigation

#flutter #flutter-навигация

Вопрос:

Я использую маршрут onGenerate для своего приложения flutter, когда я пытаюсь передать изображение в качестве аргумента с помощью push named, я по умолчанию получаю страницу ошибки без какого-либо сообщения об ошибке!!

Начальный экран

автомобиль уже инициализирован на главном экране как final AssetImage car_image;

onTap: () {Navigator.of(context).pushNamed('/details', arguments: DetailScreen(data:data ,image: car.car_image));},

Подробный экран

class DetailScreen extends StatelessWidget {

 final AssetImage image;
DetailScreen({Key key, this.image, this.data}) : super(key: key);```


  

Комментарии:

1. Вы хотите передать изображение или только ссылку, чтобы загрузить его снова? Передайте только ссылку, и если вы хотите выполнить какой-то переход, взгляните на виджет Hero.

2. @racr0x как мне передать ссылку?

3. Передайте строку с путем / именем. Я предполагаю, что вы просто хотите передавать динамический контент.

4. @racr0x изображение также является динамическим, поскольку оно передается с главного экрана как car.car_image, а не путь

5. На самом деле вам должно быть разрешено передавать это изображение. Я думаю, что ваша проблема здесь: {аргументы: DetailScreen(данные: data , изображение: car.car_image));} . Аргументами должны быть сами данные и изображение, а не экземпляр DetailScreen. Попробуйте это и дайте мне знать, если у вас возникнут какие-либо проблемы.

Ответ №1:

Надеюсь, это может помочь кому-нибудь в будущем. Предпочитайте использовать именованные маршруты, поскольку передача аргументов через них намного более определена и проста. В вашем случае определите подробный маршрут в вашем основном файле dart DetailsScreen.routeName: (ctx) => DetailsScreen() , после чего с экрана, с которого выполняется маршрутизация, передайте необходимые аргументы на экран сведений, после чего примите аргументы, используя ModalRoute.of (context)!.settings.arguments в виде метода Map<String, dynamic>, извлеките данные, и все готово.