developed

This commit is contained in:
komekh 2024-08-19 11:54:43 +05:00
parent ed4f91ce98
commit 3b12b68d0c
5 changed files with 98 additions and 67 deletions

3
devtools_options.yaml Normal file
View File

@ -0,0 +1,3 @@
description: This file stores settings for Dart & Flutter DevTools.
documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
extensions:

View File

@ -8,8 +8,11 @@ import '../../domain/entities/order/order.dart';
import '../widgets/map/clustering.dart';
import '../widgets/widgets.dart';
import 'package:flutter/services.dart';
class OrderDetailsScreen extends StatefulWidget {
final OrderEntity order;
const OrderDetailsScreen({super.key, required this.order});
@override
@ -17,24 +20,42 @@ class OrderDetailsScreen extends StatefulWidget {
}
class _OrderDetailsScreenState extends State<OrderDetailsScreen> {
bool _isFullScreen = false; // Track fullscreen mode
@override
void initState() {
context.read<OrderDetailBloc>().add(GetRoutes(widget.order.cargoId));
super.initState();
}
void _toggleFullScreen() {
setState(() {
_isFullScreen = !_isFullScreen;
if (_isFullScreen) {
// Enter fullscreen mode
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
} else {
// Exit fullscreen mode
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
}
});
}
@override
Widget build(BuildContext context) {
App.init(context);
return Scaffold(
backgroundColor: AppColors.surface,
appBar: AppBar(
appBar: _isFullScreen
? null // Hide the app bar in fullscreen mode
: AppBar(
iconTheme: const IconThemeData(
color: Colors.white,
),
backgroundColor: AppColors.primary,
title: Text(
'Sargyt ${widget.order.name}',
'Sargyt: ${widget.order.name}',
style: AppText.h2!.copyWith(color: Colors.white),
),
),
@ -43,11 +64,17 @@ class _OrderDetailsScreenState extends State<OrderDetailsScreen> {
/// map
SliverToBoxAdapter(
child: SizedBox(
height: AppDimensions.normalize(130),
child: const ClusteringPage(),
height: _isFullScreen
? MediaQuery.of(context).size.height // Full screen height
: AppDimensions.normalize(130),
child: ClusteringPage(
onFullScreenToggle: _toggleFullScreen,
isFullScreen: _isFullScreen,
),
),
),
if (!_isFullScreen) ...[
/// info text
SliverToBoxAdapter(
child: Padding(
@ -86,12 +113,13 @@ class _OrderDetailsScreenState extends State<OrderDetailsScreen> {
Space.y!,
/// location card
LocationCard(cargoId: widget.order.cargoId)
LocationCard(cargoId: widget.order.cargoId),
],
),
),
),
],
],
),
);
}

View File

@ -15,7 +15,7 @@ class BottomNavigation extends StatelessWidget {
return BlocBuilder<NavigationCubit, NavigationTab>(
builder: (context, activeTab) {
return SizedBox(
height: AppDimensions.normalize(32),
height: AppDimensions.normalize(35),
child: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: activeTab.index,

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../application/application.dart';
import '../../core/constants/colors.dart';
import '../../data/data_sources/local/languages_data_source.dart';
class BottomSheetContent extends StatelessWidget {
@ -29,20 +30,10 @@ class BottomSheetContent extends StatelessWidget {
lang.language,
style: AppText.b1,
),
trailing: state.locale.languageCode == lang.code
? Icon(
Icons.check,
color: Colors.green,
size: 26.0,
shadows: [
Shadow(
offset: const Offset(0, 2),
blurRadius: 3.0,
color: Colors.black.withOpacity(0.3),
trailing: Icon(
state.locale.languageCode == lang.code ? Icons.radio_button_checked : Icons.radio_button_off,
color: AppColors.primary,
),
],
)
: null,
onTap: () {
debugPrint('lang_selection');
context.read<LanguageBloc>().add(

View File

@ -7,9 +7,14 @@ import 'package:latlong2/latlong.dart';
import '../../../application/order_detail_bloc/order_detail_bloc.dart';
class ClusteringPage extends StatefulWidget {
static const String route = 'clusteringPage';
final VoidCallback onFullScreenToggle;
final bool isFullScreen;
const ClusteringPage({super.key});
const ClusteringPage({
super.key,
required this.onFullScreenToggle,
required this.isFullScreen,
});
@override
State<ClusteringPage> createState() => _ClusteringPageState();
@ -31,6 +36,10 @@ class _ClusteringPageState extends State<ClusteringPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
onPressed: widget.onFullScreenToggle, // Use the passed callback
child: Icon(widget.isFullScreen ? Icons.fullscreen_exit : Icons.fullscreen),
),
body: BlocBuilder<OrderDetailBloc, OrderDetailState>(
builder: (context, state) {
if (state is RoutesLoading) {