🎮Cubit List<Map<String, dynamic>>
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_lessons_in_the_evening/coffee_shop/cubit/coffee_cubit.dart';
import 'package:flutter_lessons_in_the_evening/coffee_shop/widget/app_bar_widget.dart';
import 'package:flutter_lessons_in_the_evening/coffee_shop/widget/product_card.dart';
import 'package:flutter_lessons_in_the_evening/coffee_shop/widget/text_form_filed_widget.dart';
class CoffeeScreen extends StatefulWidget {
const CoffeeScreen({super.key});
@override
State<CoffeeScreen> createState() => _CoffeeScreenState();
}
class _CoffeeScreenState extends State<CoffeeScreen> {
final TextEditingController controller = TextEditingController();
// @override
// void initState() {
// // TODO: implement initState
// getAllProducts();
// super.initState();
// }
@override
void dispose() {
// TODO: implement dispose
super.dispose();
controller.dispose();
}
void getAllProducts() {
context.read<CoffeeCubit>().getAllProducts();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(100),
child: AppBarWidget(count: 0),
),
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: BlocBuilder<CoffeeCubit, CoffeeState>(
builder: (context, state) {
return switch (state) {
CoffeeInitial() => ElevatedButton(
onPressed: () {
getAllProducts();
},
child: Text('Получить данные'),
),
CoffeeLoading() => Center(
child: CircularProgressIndicator(),
),
CoffeeError(error: String error) => Center(
child: Text(error),
),
CoffeeSuccess(data: List<Map<String, dynamic>> data) =>
SingleChildScrollView(
child: Column(
children: [
TextFormFiledWidget(controller: controller),
GridView.builder(
shrinkWrap: true,
itemCount: data.length,
physics: NeverScrollableScrollPhysics(),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
childAspectRatio: 0.65,
),
itemBuilder: (context, index) {
final newData = data[index];
return ProductCard(
like: newData['isLike'],
image: newData['image'],
title: newData['title'],
price: newData['price'],
count: newData['count'],
likePressed: () {},
remove: () {},
add: () {},
);
},
),
],
),
),
};
},
),
),
);
}
}Last updated