57 lines
1.5 KiB
Dart
57 lines
1.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import '../../../l10n/app_localizations.dart';
|
|
|
|
class ClientShell extends StatelessWidget {
|
|
final PreferredSizeWidget? appBar;
|
|
final Widget body;
|
|
final Widget? floatingActionButton;
|
|
final Color? backgroundColor;
|
|
|
|
const ClientShell({
|
|
super.key,
|
|
this.appBar,
|
|
required this.body,
|
|
this.floatingActionButton,
|
|
this.backgroundColor,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final location = GoRouterState.of(context).matchedLocation;
|
|
final l10n = AppLocalizations.of(context);
|
|
|
|
int currentIndex = 0;
|
|
if (location == '/client/bookings') currentIndex = 1;
|
|
|
|
return Scaffold(
|
|
appBar: appBar,
|
|
backgroundColor: backgroundColor,
|
|
body: body,
|
|
floatingActionButton: floatingActionButton,
|
|
bottomNavigationBar: NavigationBar(
|
|
selectedIndex: currentIndex,
|
|
onDestinationSelected: (i) {
|
|
if (i == 0) {
|
|
context.go('/client');
|
|
} else {
|
|
context.go('/client/bookings');
|
|
}
|
|
},
|
|
destinations: [
|
|
NavigationDestination(
|
|
icon: const Icon(Icons.search_outlined),
|
|
selectedIcon: const Icon(Icons.search),
|
|
label: l10n.browse,
|
|
),
|
|
NavigationDestination(
|
|
icon: const Icon(Icons.bookmark_outline),
|
|
selectedIcon: const Icon(Icons.bookmark),
|
|
label: l10n.myBookings,
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|