Обновлен проект. Добавлена БД

This commit is contained in:
2025-03-03 23:57:55 +03:00
parent 273e68557a
commit cb6ce05059
726 changed files with 9424 additions and 478 deletions

View File

@@ -3,9 +3,17 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it_mixin/get_it_mixin.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/widgets/typography.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/components/notifiers/home_screen_data.dart';
import 'package:remever/database/database.dart';
import 'package:remever/database/tables.dart';
import 'package:remever/inject.dart';
import 'package:remever/router.gr.dart';
import 'package:remever/screens/collections/cubit/collection_cubit.dart';
import 'package:remever/screens/collections/widgets/collection_card.dart';
import 'package:remever/screens/collections/widgets/collections_app_bar.dart';
import 'package:remever/screens/collections/widgets/collections_filters.dart';
@RoutePage()
class CollectionScreen extends StatelessWidget with GetItMixin {
@@ -20,10 +28,9 @@ class CollectionScreen extends StatelessWidget with GetItMixin {
Widget build(BuildContext context) {
return BlocProvider<CollectionCubit>(
create: (context) => CollectionCubit(),
child: Scaffold(
backgroundColor: AppColors.bg,
// appBar: const CollectionsAppBar(),
appBar: const CollectionsAppBar(),
body: _buildMain(context),
floatingActionButton: Builder(
builder: (BuildContext context) {
@@ -32,7 +39,9 @@ class CollectionScreen extends StatelessWidget with GetItMixin {
duration: const Duration(milliseconds: 200),
child: FloatingActionButton(
backgroundColor: AppColors.primary,
onPressed: () {},
onPressed: () {
context.pushRoute(CrudCollectionRoute());
},
// context.read<HomeCubit>().toCrudCollection(CrudType.CREATE),
child: const Icon(Icons.add),
),
@@ -49,17 +58,16 @@ class CollectionScreen extends StatelessWidget with GetItMixin {
Widget _buildMain(BuildContext context) {
return BlocBuilder<CollectionCubit, CollectionState>(
builder: (context, state) {
return state.when(
loading: () => _LoadingList(),
data:
() => const Column(
children: <Widget>[
// CollectionsFilters(),
_CollectionList(),
],
),
empty: () => _EmptyList(),
error: () => _ErrorList(),
return Column(
children: [
CollectionsFilters(),
state.when(
loading: () => _LoadingList(),
data: () => _CollectionList(),
empty: () => _EmptyList(),
error: () => _ErrorList(),
),
],
);
},
);
@@ -71,7 +79,10 @@ class _LoadingList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Placeholder(color: Colors.green);
return SizedBox(
height: MediaQuery.sizeOf(context).height / 2,
child: Center(child: CircularProgressIndicator(color: AppColors.primary)),
);
}
}
@@ -80,7 +91,12 @@ class _ErrorList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Placeholder(color: Colors.brown);
return SizedBox(
height: MediaQuery.sizeOf(context).height / 2,
child: Center(
child: AppTypography('Произошла ошибка при загрузке данных'),
),
);
}
}
@@ -89,7 +105,10 @@ class _EmptyList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const Placeholder(color: Colors.red);
return SizedBox(
height: MediaQuery.sizeOf(context).height / 2,
child: Center(child: AppTypography('Нет доступных коллекций')),
);
}
}
@@ -104,15 +123,41 @@ class _CollectionList extends StatelessWidget {
collectionCubit.initScrollListener();
return Expanded(
child: ListView.builder(
controller: collectionCubit.collectionController,
itemCount: 20,
padding: const EdgeInsets.symmetric(horizontal: 16).r,
itemBuilder:
(BuildContext context, int index) => Padding(
padding: const EdgeInsets.only(bottom: 8).r,
// child: const CollectionCard(),
),
child: StreamBuilder(
stream: getIt<AppDatabase>().collectionsDao.getCollections(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(color: AppColors.primary),
);
}
if (snapshot.connectionState == ConnectionState.active ||
snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
return _ErrorList();
}
if (snapshot.data == null || snapshot.data!.isEmpty) {
return _EmptyList();
}
return ListView.builder(
controller: collectionCubit.collectionController,
itemCount: snapshot.data!.length,
padding: const EdgeInsets.symmetric(horizontal: 16).r,
itemBuilder:
(BuildContext context, int index) => Padding(
padding: const EdgeInsets.only(bottom: 8).r,
child: const CollectionCard(),
),
);
}
return Center(
child: CircularProgressIndicator(color: AppColors.primary),
);
},
),
);
}