Files
tm_app/lib/views/shared/tablet_navigation_widget.dart
T
2025-09-06 13:18:12 +03:30

123 lines
3.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/view_models/home_view_model.dart';
import 'package:tm_app/view_models/tenders_view_model.dart';
import 'package:tm_app/views/home/strings/home_strings.dart';
import 'package:tm_app/views/profile/strings/profile_strings.dart';
import 'package:tm_app/views/tenders/strings/tenders_strings.dart';
import '../../core/routes/app_routes.dart';
class TabletNavigationWidget extends StatelessWidget {
const TabletNavigationWidget({required this.currentIndex, super.key});
final int currentIndex;
@override
Widget build(BuildContext context) {
return Container(
width: 200.0.w(),
height: double.infinity,
color: AppColors.backgroundColor,
child: Column(
children: [
SizedBox(height: 48.0.h()),
_navigationItem(
context: context,
text: HomeStrings.home,
isActive: currentIndex == 0,
onTap: () {
if (currentIndex == 0) {
return;
} else {
Router.neglect(context, () => HomeRouteData().go(context));
context.read<HomeViewModel>().init();
}
},
iconPath: AssetsManager.home,
activeIconPath: AssetsManager.homeActive,
),
_navigationItem(
context: context,
text: TendersStrings.tendersTitle,
isActive: currentIndex == 1,
onTap: () {
if (currentIndex == 1) {
return;
} else {
Router.neglect(context, () => TendersRouteData().go(context));
context.read<TendersViewModel>().getTenders();
}
},
iconPath: AssetsManager.tenders,
activeIconPath: AssetsManager.tendersActive,
),
_navigationItem(
context: context,
text: ProfileStrings.profileTitle,
isActive: currentIndex == 2,
onTap: () {
if (currentIndex == 2) {
return;
} else {
context.pop();
Router.neglect(context, () => ProfileRouteData().go(context));
}
},
iconPath: AssetsManager.profile,
activeIconPath: AssetsManager.profileActive,
),
],
),
);
}
Widget _navigationItem({
required BuildContext context,
required String text,
required bool isActive,
required VoidCallback onTap,
required String iconPath,
required String activeIconPath,
}) {
return InkWell(
onTap: onTap,
child: Container(
width: 200.0.w(),
height: 64.0.h(),
decoration: BoxDecoration(color: AppColors.backgroundColor),
child: Padding(
padding: EdgeInsetsDirectional.only(start: 24.0.w()),
child: Row(
children: [
SvgPicture.asset(isActive ? activeIconPath : iconPath),
SizedBox(width: 12.0.w()),
Text(
text,
style: TextStyle(
fontSize: 14.0.sp(),
fontWeight: isActive ? FontWeight.w600 : FontWeight.w400,
color: isActive ? AppColors.primaryColor : AppColors.grey60,
),
),
Spacer(),
Container(
width: 4.0.w(),
height: 64.0.h(),
decoration: BoxDecoration(
color: isActive ? AppColors.primaryColor : Colors.transparent,
),
),
],
),
),
),
);
}
}