first commit

This commit is contained in:
2025-03-03 20:59:42 +03:00
commit 273e68557a
1099 changed files with 17880 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
// Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:auto_route/auto_route.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/widgets/wspace.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/gen/assets.gen.dart';
import 'package:remever/router.gr.dart';
@RoutePage()
class HomeScreen extends StatelessWidget {
///
/// Основной экран на котором расположен бар навигации
///
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
print('build home screen');
return SafeArea(
top: false,
child: AutoTabsScaffold(
routes: <PageRouteInfo>[
SettingsRoute(),
StatistickRoute(),
CrudCollection(),
CollectionRoute(),
],
bottomNavigationBuilder: (_, TabsRouter tabsRouter) {
return SizedBox(
height: 73.h,
child: Stack(
alignment: Alignment.bottomCenter,
children: <Widget>[
_buildBackgroundBar(tabsRouter),
_buildCentralButton(),
],
),
);
},
),
);
}
/// Построение заднего фона и кнопок нижнего бара
Widget _buildBackgroundBar(TabsRouter tabsRouter) {
return Container(
height: 64.h,
color: AppColors.white,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 32).r,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
_BottomBarIcon(
icon: Assets.icons.typeSetting,
isActive: tabsRouter.activeIndex == 0,
onTap: () => tabsRouter.setActiveIndex(0),
),
_BottomBarIcon(
icon: Assets.icons.typeStat,
isActive: tabsRouter.activeIndex == 1,
onTap: () => tabsRouter.setActiveIndex(1),
),
const WSpace(60),
_BottomBarIcon(
icon: Assets.icons.typeCreateCard,
isActive: tabsRouter.activeIndex == 2,
onTap: () => tabsRouter.setActiveIndex(2),
),
_BottomBarIcon(
icon: Assets.icons.typeCollection,
isActive: tabsRouter.activeIndex == 3,
onTap: () => tabsRouter.setActiveIndex(3),
),
],
),
),
);
}
/// Построение центральной кнопки
Widget _buildCentralButton() {
return Align(
alignment: Alignment.topCenter,
child: GestureDetector(
onTap: () {
// Логика нажатия на центральную кнопку
},
child: SizedBox.square(
dimension: 60.r,
child: DecoratedBox(
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: AppColors.primary,
),
child: Center(
child: Assets.icons.typeLearn.image(
color: AppColors.white,
height: 24.h,
width: 24.w,
),
),
),
),
),
);
}
}
class _BottomBarIcon extends StatelessWidget {
final AssetGenImage icon;
final bool isActive;
final VoidCallback onTap;
const _BottomBarIcon({
required this.icon,
required this.isActive,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: icon.image(
height: 24.h,
width: 24.w,
color: isActive ? AppColors.primary : Colors.black,
),
);
}
}