first commit
This commit is contained in:
136
lib/screens/home/home_screen.dart
Normal file
136
lib/screens/home/home_screen.dart
Normal 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,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user