Skip to content

Commit 0c7b801

Browse files
committed
Link to ingredient product
1 parent d79645a commit 0c7b801

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed

lib/models/nutrition/image.dart

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,44 @@ class IngredientImage {
4040
@JsonKey(required: true)
4141
final int size;
4242

43+
// License information
44+
45+
/// License ID
46+
@JsonKey(required: true, name: 'license')
47+
final int licenseId;
48+
49+
/// Author(s)
50+
@JsonKey(required: true, name: 'license_author')
51+
final String author;
52+
53+
/// Author profile, if available
54+
@JsonKey(required: true, name: 'license_author_url')
55+
final String authorUrl;
56+
57+
/// The title of the image
58+
@JsonKey(required: true, name: 'license_title')
59+
final String title;
60+
61+
/// The URL of the original image
62+
@JsonKey(required: true, name: 'license_object_url')
63+
final String objectUrl;
64+
65+
/// The URL of the original image if this is a derivative object
66+
@JsonKey(required: true, name: 'license_derivative_source_url')
67+
final String derivativeSourceUrl;
68+
4369
const IngredientImage({
4470
required this.id,
4571
required this.uuid,
4672
required this.ingredientId,
4773
required this.image,
4874
required this.size,
75+
required this.licenseId,
76+
required this.author,
77+
required this.authorUrl,
78+
required this.title,
79+
required this.objectUrl,
80+
required this.derivativeSourceUrl,
4981
});
5082

5183
// Boilerplate

lib/models/nutrition/image.g.dart

Lines changed: 25 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/widgets/nutrition/meal.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import 'package:flutter/material.dart';
2020
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
2121
import 'package:provider/provider.dart';
2222
import 'package:wger/helpers/consts.dart';
23+
import 'package:wger/helpers/misc.dart';
2324
import 'package:wger/models/nutrition/meal.dart';
2425
import 'package:wger/models/nutrition/meal_item.dart';
2526
import 'package:wger/providers/nutrition.dart';
@@ -163,7 +164,16 @@ class MealItemWidget extends StatelessWidget {
163164

164165
return ListTile(
165166
leading: _item.ingredientObj.image != null
166-
? CircleAvatar(backgroundImage: NetworkImage(_item.ingredientObj.image!.image))
167+
? GestureDetector(
168+
child: CircleAvatar(backgroundImage: NetworkImage(_item.ingredientObj.image!.image)),
169+
onTap: () async {
170+
if (_item.ingredientObj.image!.objectUrl != '') {
171+
return launchURL(_item.ingredientObj.image!.objectUrl, context);
172+
} else {
173+
return;
174+
}
175+
},
176+
)
167177
: const CircleIconAvatar(Icon(Icons.image, color: Colors.grey)),
168178
title: Text(
169179
'${_item.amount.toStringAsFixed(0)}$unit ${_item.ingredientObj.name}',

0 commit comments

Comments
 (0)