diff --git a/lib/Presentation/home_page/home_page.dart b/lib/Presentation/home_page/home_page.dart index af7f091..4daa024 100644 --- a/lib/Presentation/home_page/home_page.dart +++ b/lib/Presentation/home_page/home_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:labs_petrushin/repositories/mock_repository.dart'; import '../../Presentation/detailPage.dart'; part '../../domain/models/card.dart'; @@ -35,31 +36,22 @@ class Body extends StatelessWidget { @override Widget build(BuildContext context) { - final data = [ - CardData(text: "Батон", - info: "Белый хлеб, испечённый в виде продолговатой булки", - urlImage: "https://hlebzavod3.ru/images/virtuemart/product/011_IMG_9657.jpg"), - CardData(text: "Багет", - info: "Длинный тонкий вид хлеба французского происхождения", - urlImage: "https://main-cdn.sbermegamarket.ru/big1/hlr-system/13/14/29/23/31/01/100027310078b0.jpg"), - CardData(text: "Круассан", - info: "Небольшое мучное кондитерское изделие, булочка в форме полумесяца из слоёного теста", - urlImage: "https://shokoladd.ru/wp-content/uploads/2019/02/Croissant_Chocolate_Plate_Two_547531_2048x1152.jpg"), - CardData(text: "Чиаба́тта", - info: "Итальянский пшеничный хлеб, выпекаемый с использованием закваски, дрожжей и оливкового масла", - urlImage: "https://avatars.mds.yandex.net/i?id=a9163f90a989a596b26b30ad39beaf47_l-10629685-images-thumbs&n=13"), - CardData(text: "Булочка без картинки", - info: "Очень кусьна", - urlImage: null) - ]; + final data = MockRepository().loadData(); return Center( - child: SingleChildScrollView( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: data.map((e) => MyCard.fromData(e, - onLike: () => _showSnackBar(context),)).toList(), - ) - ) + child: FutureBuilder?>( + future: data, + builder: (context, snapshot) => + SingleChildScrollView( + child: snapshot.hasData ? Column( + mainAxisAlignment: MainAxisAlignment.center, + children: snapshot.data?.map((e) => MyCard.fromData( + e, + onLike: () => _showSnackBar(context), + )).toList() ?? [], + ) + : const CircularProgressIndicator(), + ), + ), ); } diff --git a/lib/data/mappers/bread_mapper.dart b/lib/data/mappers/bread_mapper.dart new file mode 100644 index 0000000..a0d74d8 --- /dev/null +++ b/lib/data/mappers/bread_mapper.dart @@ -0,0 +1,10 @@ + +import 'package:labs_petrushin/Presentation/home_page/home_page.dart'; +import 'package:labs_petrushin/data/dtos/bread_dto.dart'; + +extension CharacterDataDtoToModel on BreadDataDto { + CardData toDomain() => CardData( + text: attributes?.name ?? "Просто хлэп", + info: attributes?.info ?? "Очень кусьна", + urlImage: attributes?.image); +} \ No newline at end of file diff --git a/lib/repositories/api_interface.dart b/lib/repositories/api_interface.dart new file mode 100644 index 0000000..ae604d1 --- /dev/null +++ b/lib/repositories/api_interface.dart @@ -0,0 +1,6 @@ + +import 'package:labs_petrushin/Presentation/home_page/home_page.dart'; + +abstract class ApiInterface { + Future?> loadData(); +} \ No newline at end of file diff --git a/lib/repositories/mock_repository.dart b/lib/repositories/mock_repository.dart new file mode 100644 index 0000000..156bb78 --- /dev/null +++ b/lib/repositories/mock_repository.dart @@ -0,0 +1,22 @@ +import 'package:labs_petrushin/Presentation/home_page/home_page.dart'; +import 'package:labs_petrushin/repositories/api_interface.dart'; + +class MockRepository extends ApiInterface { + @override + Future?> loadData() async { + return [ + CardData(text: "Батон", + info: "Белый хлеб, испечённый в виде продолговатой булки", + urlImage: "https://hlebzavod3.ru/images/virtuemart/product/011_IMG_9657.jpg"), + CardData(text: "Багет", + info: "Длинный тонкий вид хлеба французского происхождения", + urlImage: "https://main-cdn.sbermegamarket.ru/big1/hlr-system/13/14/29/23/31/01/100027310078b0.jpg"), + CardData(text: "Круассан", + info: "Небольшое мучное кондитерское изделие, булочка в форме полумесяца из слоёного теста", + urlImage: "https://shokoladd.ru/wp-content/uploads/2019/02/Croissant_Chocolate_Plate_Two_547531_2048x1152.jpg"), + CardData(text: "Чиаба́тта", + info: "Итальянский пшеничный хлеб, выпекаемый с использованием закваски, дрожжей и оливкового масла", + urlImage: "https://avatars.mds.yandex.net/i?id=a9163f90a989a596b26b30ad39beaf47_l-10629685-images-thumbs&n=13") + ]; + } +} \ No newline at end of file