Skip to content

Commit

Permalink
Create 'Layout' utility class (#184)
Browse files Browse the repository at this point in the history
  • Loading branch information
Airyzz authored Dec 22, 2023
1 parent 04013ee commit a32f530
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 56 deletions.
27 changes: 27 additions & 0 deletions commet/lib/config/layout_config.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'package:commet/config/build_config.dart';
import 'package:flutter/widgets.dart';

class Layout {
static bool get desktop {
if (BuildConfig.DESKTOP) {
return true;
}

return !_isPortrait();
}

static bool get mobile {
if (BuildConfig.MOBILE) {
return true;
}

return _isPortrait();
}

static bool _isPortrait() {
var view = WidgetsBinding.instance.platformDispatcher.views.first;
var size = view.physicalSize;

return size.height > size.width;
}
}
13 changes: 3 additions & 10 deletions commet/lib/ui/navigation/adaptive_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:commet/config/build_config.dart';
import 'package:commet/utils/orientation.dart';
import 'package:commet/config/layout_config.dart';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:tiamat/config/style/theme_extensions.dart';
Expand All @@ -8,20 +7,14 @@ import 'package:tiamat/tiamat.dart' as tiamat;
import 'package:flutter/material.dart' as m;

class AdaptiveDialog {
static bool showDesktopVersion(BuildContext context) =>
BuildConfig.DESKTOP ||
(BuildConfig.WEB &&
OrientationUtils.getCurrentOrientation(context) ==
Orientation.landscape);

static Future<T?> show<T extends Object?>(
BuildContext context, {
required Widget Function(BuildContext context) builder,
required String title,
bool dismissible = true,
double initialHeightMobile = 0.5,
}) async {
if (showDesktopVersion(context)) {
if (Layout.desktop) {
return PopupDialog.show<T>(context,
content: builder(context),
title: title,
Expand Down Expand Up @@ -67,7 +60,7 @@ class AdaptiveDialog {
bool dangerous = false}) {
return show<bool?>(context, builder: (context) {
return SizedBox(
width: showDesktopVersion(context) ? 500 : null,
width: Layout.desktop ? 500 : null,
child: Padding(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 8),
child: Column(
Expand Down
19 changes: 5 additions & 14 deletions commet/lib/ui/pages/main/main_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'dart:async';
import 'package:commet/client/client.dart';
import 'package:commet/client/client_manager.dart';
import 'package:commet/config/build_config.dart';
import 'package:commet/config/layout_config.dart';
import 'package:commet/main.dart';
import 'package:commet/ui/pages/setup/setup_page.dart';
import 'package:commet/utils/event_bus.dart';
Expand All @@ -10,7 +10,6 @@ import 'package:commet/ui/pages/main/main_page_view_desktop.dart';
import 'package:commet/ui/pages/main/main_page_view_mobile.dart';
import 'package:commet/ui/pages/settings/room_settings_page.dart';
import 'package:commet/utils/first_time_setup.dart';
import 'package:commet/utils/orientation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

Expand Down Expand Up @@ -105,19 +104,11 @@ class MainPageState extends State<MainPage> {

@override
Widget build(BuildContext context) {
if (BuildConfig.DESKTOP) return MainPageViewDesktop(this);
if (BuildConfig.MOBILE) return MainPageViewMobile(this);

if (BuildConfig.WEB) {
if (OrientationUtils.getCurrentOrientation(context) ==
Orientation.landscape) {
return MainPageViewDesktop(this);
} else {
return MainPageViewMobile(this);
}
if (Layout.mobile) {
return MainPageViewMobile(this);
} else {
return MainPageViewDesktop(this);
}

throw Exception("Unknown build config");
}

void selectSpace(Space? space) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:commet/config/build_config.dart';
import 'package:commet/config/layout_config.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:tiamat/config/style/theme_extensions.dart';
Expand Down Expand Up @@ -95,10 +95,10 @@ class MatrixSessionView extends StatelessWidget {
),
],
),
if (BuildConfig.DESKTOP) verifyButton()
if (Layout.desktop) verifyButton()
],
),
if (BuildConfig.MOBILE) Align(child: verifyButton()),
if (Layout.mobile) Align(child: verifyButton()),
],
),
),
Expand Down
21 changes: 3 additions & 18 deletions commet/lib/ui/pages/settings/settings_page.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import 'package:commet/config/build_config.dart';
import 'package:commet/config/layout_config.dart';
import 'package:commet/ui/pages/settings/mobile_settings_page.dart';
import 'package:commet/ui/pages/settings/settings_button.dart';
import 'package:commet/ui/pages/settings/settings_category.dart';
import 'package:commet/utils/orientation.dart';
import 'package:flutter/widgets.dart';

import 'desktop_settings_page.dart';
Expand All @@ -18,33 +17,19 @@ class SettingsPage extends StatelessWidget {
}

Widget pickChatView(BuildContext context) {
if (BuildConfig.DESKTOP) {
if (Layout.desktop) {
return DesktopSettingsPage(
settings: settings,
buttons: buttons,
);
}
if (BuildConfig.MOBILE) {
if (Layout.mobile) {
return MobileSettingsPage(
settings: settings,
buttons: buttons,
);
}

if (BuildConfig.WEB) {
if (OrientationUtils.getCurrentOrientation(context) ==
Orientation.landscape) {
return DesktopSettingsPage(
settings: settings,
buttons: buttons,
);
} else {
return MobileSettingsPage(
settings: settings,
buttons: buttons,
);
}
}
throw Exception(
"No SettingsPage has been defined for the current build config");
}
Expand Down
11 changes: 0 additions & 11 deletions commet/lib/utils/orientation.dart

This file was deleted.

0 comments on commit a32f530

Please sign in to comment.