Skip to content

Commit

Permalink
Reorganised the solution to reduce unnecessary fragmentation
Browse files Browse the repository at this point in the history
  • Loading branch information
hughesjs committed Jun 1, 2024
1 parent c962df3 commit 605c226
Show file tree
Hide file tree
Showing 47 changed files with 149 additions and 167 deletions.
59 changes: 59 additions & 0 deletions src/lib/bootstrap.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:logger/logger.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_command_dispatcher.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_provider.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_query_dispatcher.dart';
import 'package:fitness_machine/hardware/widgets/pages/device_selection_screen.dart';
import 'package:fitness_machine/layouts/main_layout.dart';
import 'package:fitness_machine/layouts/page_definition.dart';
import 'package:fitness_machine/layouts/page_definition_provider.dart';
import 'package:fitness_machine/main.dart';
import 'package:fitness_machine/treadmill_control/widgets/pages/control_page.dart';
import 'package:fitness_machine/workout_management/widgets/pages/workout_history_page.dart';

class Bootstrap {
static MyApp bootstrap() {
_setupLogging();
_registerPages();
_registerLayouts();
_registerHardware();
_registerApp();

return GetIt.I<MyApp>();
}

static void _setupLogging() {
GetIt.I.registerSingleton(Logger());
}

static void _registerLayouts() {
GetIt.I.registerLazySingleton(() => MainLayout(GetIt.I<PageDefinitionProvider>()));
}

static void _registerPages() {
GetIt.I.registerSingleton<ControlPage>(const ControlPage());
GetIt.I.registerSingleton<WorkoutHistoryPage>(const WorkoutHistoryPage());

GetIt.I.registerLazySingleton(() => PageDefinitionProvider({
PageDefinition(GetIt.I<ControlPage>(), "Control", const Icon(Icons.bluetooth), const Icon(Icons.bluetooth_outlined)),
PageDefinition(GetIt.I<WorkoutHistoryPage>(), "Workout History", const Icon(Icons.history), const Icon(Icons.history_outlined))
}));
}

static void _registerApp() {
GetIt.I.registerLazySingleton<MyApp>(() {
return MyApp(GetIt.I<MainLayout>());
});
}

static void _registerHardware() {
// Use SafeDevice if we need to inject fakes for simulator
WidgetsFlutterBinding.ensureInitialized();

GetIt.I.registerSingleton<FitnessMachineProvider>(FitnessMachineProvider());
GetIt.I.registerSingleton<FitnessMachineCommandDispatcher>((FitnessMachineCommandDispatcher()));
GetIt.I.registerSingleton<FitnessMachineQueryDispatcher>((FitnessMachineQueryDispatcher()));
GetIt.I.registerSingleton<DeviceSelectionScreen>(const DeviceSelectionScreen());
}
}
52 changes: 0 additions & 52 deletions src/lib/common/dependency_injection/dependency_injection.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'dart:typed_data';
import 'package:fitness_machine/common/utility/number_extensions.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_services.dart';
import 'package:fitness_machine/modules/hardware/bt/models/bt_command.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_characteristics.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_opcodes.dart';
import 'package:fitness_machine/common/lib_extensions/number_extensions.dart';
import 'package:fitness_machine/hardware/ble/constants/known_services.dart';
import 'package:fitness_machine/hardware/ble/models/bt_command.dart';
import 'package:fitness_machine/hardware/ble/constants/known_characteristics.dart';
import 'package:fitness_machine/hardware/ble/constants/known_opcodes.dart';

// See FTMS 4.16
class KnownCommands {
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_characteristics.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_services.dart';
import 'package:fitness_machine/modules/hardware/bt/extensions/bluetooth_device_extensions.dart';
import 'package:fitness_machine/modules/hardware/bt/extensions/bluetooth_service_extensions.dart';
import 'package:fitness_machine/hardware/ble/constants/known_characteristics.dart';
import 'package:fitness_machine/hardware/ble/constants/known_services.dart';
import 'package:fitness_machine/hardware/ble/extensions/bluetooth_device_extensions.dart';
import 'package:fitness_machine/hardware/ble/extensions/bluetooth_service_extensions.dart';

class FitnessMachine {
final BluetoothService fitnessMachineService;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_commands.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_provider.dart';

import 'package:fitness_machine/hardware/ble/constants/known_commands.dart';
import 'package:fitness_machine/hardware/services/fitness_machine.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_provider.dart';

class FitnessMachineCommandDispatcher {
final Stream<FitnessMachine?> currentMachineStream;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get_it/get_it.dart';
import 'package:logger/logger.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine.dart';
import 'package:fitness_machine/hardware/services/fitness_machine.dart';

class FitnessMachineProvider {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import 'dart:async';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/bt/models/treadmill_data.dart';
import 'package:fitness_machine/modules/hardware/bt/models/supported_speed_range.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_provider.dart';
import 'package:fitness_machine/hardware/ble/models/treadmill_data.dart';
import 'package:fitness_machine/hardware/ble/models/supported_speed_range.dart';
import 'package:fitness_machine/hardware/services/fitness_machine.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_provider.dart';


class FitnessMachineQueryDispatcher {
bool get isConnected => _currentMachine != null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:fitness_machine/modules/hardware/widgets/cubits/bluetooth_enablement_cubit.dart';
import 'package:fitness_machine/hardware/widgets/cubits/bluetooth_enablement_cubit.dart';

class EnsureBluetoothEnabledWrapper extends StatelessWidget {
final Widget onEnabled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ import 'package:flutter/scheduler.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:logger/logger.dart';
import 'package:fitness_machine/modules/hardware/widgets/cubits/device_connected_cubit.dart';
import 'package:fitness_machine/modules/hardware/widgets/pages/device_selection_screen.dart';
import 'package:fitness_machine/hardware/widgets/cubits/device_connected_cubit.dart';
import 'package:fitness_machine/hardware/widgets/pages/device_selection_screen.dart';


class EnsureDeviceConnectedBarrier extends StatelessWidget {
final Widget onEnabled;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fitness_machine/modules/hardware/widgets/cubits/bluetooth_scanning_cubit.dart';
import 'package:fitness_machine/hardware/widgets/cubits/bluetooth_scanning_cubit.dart';

class BluetoothScanningIndicator extends StatelessWidget {
const BluetoothScanningIndicator({super.key});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fitness_machine/modules/hardware/widgets/barriers/ensure_bluetooth_enabled_wrapper.dart';
import 'package:fitness_machine/modules/hardware/widgets/cubits/fitness_machine_cubit.dart';
import 'package:fitness_machine/modules/hardware/widgets/models/device_descriptor.dart';
import 'package:fitness_machine/hardware/widgets/barriers/ensure_bluetooth_enabled_wrapper.dart';
import 'package:fitness_machine/hardware/widgets/cubits/fitness_machine_cubit.dart';
import 'package:fitness_machine/hardware/widgets/models/device_descriptor.dart';

class FitnessMachineList extends StatelessWidget {
const FitnessMachineList({super.key});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import 'dart:async';

import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_provider.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_provider.dart';


class DeviceConnectedCubit extends Cubit<bool> {
final FitnessMachineProvider _fitnessMachineProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/bt/constants/known_services.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_provider.dart';
import 'package:fitness_machine/modules/hardware/widgets/models/device_descriptor.dart';
import 'package:fitness_machine/hardware/ble/constants/known_services.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_provider.dart';
import 'package:fitness_machine/hardware/widgets/models/device_descriptor.dart';

class FitnessMachineDiscoveryCubit extends Cubit<List<DeviceDescriptor>> {
final FitnessMachineProvider _fitnessMachineProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:fitness_machine/modules/hardware/widgets/controls/bluetooth_scanning_indicator.dart';
import 'package:fitness_machine/modules/hardware/widgets/controls/fitness_machine_list.dart';
import 'package:fitness_machine/hardware/widgets/controls/bluetooth_scanning_indicator.dart';
import 'package:fitness_machine/hardware/widgets/controls/fitness_machine_list.dart';

class DeviceSelectionScreen extends StatelessWidget {
const DeviceSelectionScreen({super.key});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:fitness_machine/common/layouts/page_definition_provider.dart';
import 'package:fitness_machine/layouts/page_definition_provider.dart';

class MainLayout extends StatefulWidget {
final PageDefinitionProvider _pageProvider;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:fitness_machine/common/layouts/page_definition.dart';
import 'package:fitness_machine/layouts/page_definition.dart';

class PageDefinitionProvider {
final Set<PageDefinition> _pageDefinitions;
Expand Down
12 changes: 7 additions & 5 deletions src/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:logger/logger.dart';
import 'package:fitness_machine/bootstrap.dart';
import 'package:wakelock_plus/wakelock_plus.dart';
import 'package:fitness_machine/common/dependency_injection/dependency_injection.dart';
import 'package:fitness_machine/common/layouts/main_layout.dart';
import 'package:fitness_machine/layouts/main_layout.dart';

Future<void> main() async {
final DependencyInjection container = await DependencyInjection.bootstrap();
final MyApp app = container.get<MyApp>();
final MyApp app = Bootstrap.bootstrap();
Logger logger = GetIt.I<Logger>();
if (kDebugMode) {
print("Enabling wakelock in debug mode");
logger.i("Enabling wakelock in debug mode");
WakelockPlus.enable();
}
runApp(app);
Expand Down

This file was deleted.

18 changes: 0 additions & 18 deletions src/lib/modules/hardware/dependency_injection/hardware_di.dart

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions src/lib/modules/overview/overview_page.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fitness_machine/modules/demo_ctrl/models/speed_state.dart';
import 'package:fitness_machine/modules/demo_ctrl/widgets/cubits/speed_range_and_setting_cubit.dart';
import 'package:fitness_machine/treadmill_control/models/speed_state.dart';
import 'package:fitness_machine/treadmill_control/widgets/cubits/speed_range_and_setting_cubit.dart';

class SpeedIndicator extends StatelessWidget {
const SpeedIndicator({super.key});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_command_dispatcher.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_command_dispatcher.dart';


class TreadmillControls extends StatelessWidget {
final FitnessMachineCommandDispatcher _fitnessMachineCommandDispatcher;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:fitness_machine/modules/hardware/bt/models/treadmill_data.dart';
import 'package:fitness_machine/modules/demo_ctrl/widgets/controls/unit_quantity_card.dart';
import 'package:fitness_machine/modules/demo_ctrl/widgets/cubits/workout_status_cubit.dart';
import 'package:fitness_machine/hardware/ble/models/treadmill_data.dart';
import 'package:fitness_machine/treadmill_control/widgets/controls/unit_quantity_card.dart';
import 'package:fitness_machine/treadmill_control/widgets/cubits/workout_status_cubit.dart';

class WorkoutStatusPanel extends StatelessWidget {
const WorkoutStatusPanel({super.key});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/demo_ctrl/models/speed_state.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_command_dispatcher.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_query_dispatcher.dart';
import 'package:fitness_machine/treadmill_control/models/speed_state.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_command_dispatcher.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_query_dispatcher.dart';

class SpeedRangeAndSettingCubit extends Cubit<SpeedState> {
final FitnessMachineQueryDispatcher _fitnessMachineQueryDispatcher;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import 'dart:async';

import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:get_it/get_it.dart';
import 'package:fitness_machine/modules/hardware/services/fitness_machine_query_dispatcher.dart';
import 'package:fitness_machine/modules/hardware/bt/models/treadmill_data.dart';
import 'package:fitness_machine/hardware/services/fitness_machine_query_dispatcher.dart';
import 'package:fitness_machine/hardware/ble/models/treadmill_data.dart';

class TrainingStatusCubit extends Cubit<TreadmillData> {
final FitnessMachineQueryDispatcher _fitnessMachineQueryDispatcher;
Expand Down
Loading

0 comments on commit 605c226

Please sign in to comment.