feat(recipes): add recipes screen

This commit is contained in:
mso7nueh
2024-08-02 17:52:06 +03:00
parent 904adbba2f
commit 3ba48289b0
3 changed files with 88 additions and 23 deletions

View File

@@ -7,7 +7,6 @@ import 'package:eatvio_app/features/feed/presentation/widgets/recipes_widget.dar
import 'package:eatvio_app/theme/theme_helper.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
@@ -29,9 +28,6 @@ class _FeedScreenState extends State<FeedScreen> {
appBar: AppBar(
backgroundColor: Colors.white,
toolbarHeight: 0,
systemOverlayStyle: SystemUiOverlayStyle(
statusBarColor: Colors.white,
),
),
backgroundColor: Colors.grey.shade200,
body: NestedScrollView(

View File

@@ -20,11 +20,10 @@ class _BlogPostWidgetState extends State<BlogPostWidget> {
Widget build(BuildContext context) {
return InkWell(
borderRadius: BorderRadius.circular(12),
onTap: () =>
GoRouter.of(context).pushNamed(
'blogPostScreen',
extra: widget.feedBlogPostModel.id.toString(),
),
onTap: () => GoRouter.of(context).pushNamed(
'blogPostScreen',
extra: widget.feedBlogPostModel.id.toString(),
),
child: Ink(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12),

View File

@@ -14,35 +14,105 @@ class AboutRecipesScreen extends StatelessWidget {
return Scaffold(
appBar: AppBar(),
body: SingleChildScrollView(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(recipes.title),
Row(
children: [
Text(recipes.cookingTime.toString() + ' минут'),
SizedBox(width: 16),
Text(recipes.steps.length.toString() + ' этапов'),
],
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
recipes.title,
style: TextStyle(
color: Colors.black,
fontSize: 24,
fontWeight: FontWeight.w500,
height: 1,
),
),
),
Text(recipes.videoUrl),
CachedNetworkImage(imageUrl: baseUrl + '/storage/' + recipes.image),
SizedBox(height: 12),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Row(
children: [
Icon(Icons.timer_outlined),
SizedBox(width: 4),
Text(
recipes.cookingTime.toString() + ' минут',
style: TextStyle(
color: Colors.black,
fontSize: 12,
fontWeight: FontWeight.w400,
height: 1,
),
),
SizedBox(width: 16),
Icon(Icons.fast_forward_outlined),
SizedBox(width: 4),
Text(
recipes.steps.length.toString() + ' этапов',
style: TextStyle(
color: Colors.black,
fontSize: 12,
fontWeight: FontWeight.w400,
height: 1,
),
),
],
),
),
SizedBox(height: 12),
CachedNetworkImage(
imageUrl: baseUrl + '/storage/' + recipes.image,
),
SizedBox(height: 12),
Text(recipes.ingredients.toString()),
Text('Пошаговый рецепт'),
for (int i = 0; i < recipes.steps.length; i++) ...[_step(recipes.steps[i])],
ListView.separated(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) =>
_step(recipes.steps[index], index + 1),
separatorBuilder: (context, index) => SizedBox(height: 16),
itemCount: recipes.steps.length,
),
],
),
),
);
}
_step(step.Step step) {
_step(step.Step step, int stepNubmer) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(step.description),
if (step.image.length > 1) CachedNetworkImage(imageUrl: baseUrl + '/storage/' + step.image),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
'Шаг ' + stepNubmer.toString(),
style: TextStyle(
color: Colors.black54,
fontSize: 14,
fontWeight: FontWeight.w400,
height: 1,
),
),
),
SizedBox(height: 12),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Text(
step.description,
style: TextStyle(
color: Colors.black,
fontSize: 14,
fontWeight: FontWeight.w400,
height: 1.2,
),
),
),
SizedBox(height: 8),
if (step.image.length > 1)
CachedNetworkImage(imageUrl: baseUrl + '/storage/' + step.image),
],
);
}