72 lines
2.2 KiB
Dart
Raw Normal View History

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_project/domain/models/card.dart';
import 'package:flutter_project/views/details_page/details_page.dart';
part 'card.dart';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<CardData> data = [
CardData(
textData: "250x150 picture",
imageUrl: "https://loremflickr.com/250/150/cat"),
CardData(
textData: "200x250 picture",
imageUrl: "https://loremflickr.com/200/250/cat"),
CardData(
textData: "200x200 picture",
imageUrl: "https://loremflickr.com/200/200/cat"),
CardData(
textData: "100x150 picture",
imageUrl: "https://loremflickr.com/100/150/cat"),
CardData(
textData: "300x150 picture",
imageUrl: "https://loremflickr.com/350/150/cat"),
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(
'Item list',
),
),
body: SingleChildScrollView(
child: Column(
children: data
.map((d) => _Card.withData(d,
onTap: () => _navToDetails(context, d),
onLike: (String title, bool isLiked) =>
_showSnackBar(context, isLiked, title)))
.toList(),
),
));
}
void _showSnackBar(BuildContext context, bool isLiked, String title) {
WidgetsBinding.instance.addPostFrameCallback((_) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
isLiked ? "You liked $title" : "Like removed from $title",
style: Theme.of(context).textTheme.bodyLarge,
),
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
duration: const Duration(milliseconds: 1200),
));
});
}
void _navToDetails(BuildContext context, CardData d) {
Navigator.push(
context, CupertinoPageRoute(builder: (context) => DetailsPage(d)));
}
}