mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-30 20:24:25 +00:00
fix(database): correctly store manually ordered module list
This commit is contained in:
@@ -414,7 +414,7 @@ class ProfileHiveObject extends HiveObject {
|
||||
};
|
||||
|
||||
bool get anythingEnabled {
|
||||
for (LunaModule module in LunaModule.DASHBOARD.allModules()) {
|
||||
for (final module in LunaModule.active) {
|
||||
if (module.isEnabled) return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -61,7 +61,18 @@ enum LunaModule {
|
||||
@HiveField(9)
|
||||
TAUTULLI,
|
||||
@HiveField(10)
|
||||
WAKE_ON_LAN,
|
||||
WAKE_ON_LAN;
|
||||
|
||||
/// Returns a list of all system-enabled modules.
|
||||
///
|
||||
/// Internal modules (dashboard, settings, etc.) are removed by default.
|
||||
static List<LunaModule> get active {
|
||||
return LunaModule.values.filter((m) {
|
||||
if (m == LunaModule.DASHBOARD) return false;
|
||||
if (m == LunaModule.SETTINGS) return false;
|
||||
return m.featureFlag;
|
||||
}).toList();
|
||||
}
|
||||
}
|
||||
|
||||
extension LunaModuleExtension on LunaModule {
|
||||
@@ -95,21 +106,6 @@ extension LunaModuleExtension on LunaModule {
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns a list of all system-enabled modules.
|
||||
///
|
||||
/// Internal modules (dashboard, settings, etc.) are removed by default.
|
||||
List<LunaModule> allModules({
|
||||
bool removeInternalModules = true,
|
||||
}) {
|
||||
List<LunaModule> _modules =
|
||||
LunaModule.values.filter((module) => module.featureFlag).toList();
|
||||
if (removeInternalModules) {
|
||||
_modules.remove(LunaModule.DASHBOARD);
|
||||
_modules.remove(LunaModule.SETTINGS);
|
||||
}
|
||||
return _modules;
|
||||
}
|
||||
|
||||
/// Used to convert a string key back to a [LunaModule] value.
|
||||
///
|
||||
/// If the key is not found, returns null.
|
||||
|
||||
@@ -20,6 +20,7 @@ class LunaDatabase {
|
||||
for (final table in LunaTable.values) table.items[0].registerAdapters();
|
||||
for (final box in LunaBox.values) await box.open();
|
||||
if (LunaBox.profiles.box.isEmpty) await bootstrap();
|
||||
// await bootstrap();
|
||||
}
|
||||
|
||||
Future<void> bootstrap() async {
|
||||
|
||||
@@ -13,7 +13,7 @@ import 'package:lunasea/widgets/ui.dart';
|
||||
|
||||
enum LunaSeaDatabase<T> with LunaTableMixin<T> {
|
||||
DRAWER_AUTOMATIC_MANAGE<bool>(true),
|
||||
DRAWER_MANUAL_ORDER<List<LunaModule>?>(null),
|
||||
DRAWER_MANUAL_ORDER<List>([]),
|
||||
ENABLED_PROFILE<String>('default'),
|
||||
NETWORKING_TLS_VALIDATION<bool>(false),
|
||||
THEME_AMOLED<bool>(false),
|
||||
@@ -76,11 +76,12 @@ enum LunaSeaDatabase<T> with LunaTableMixin<T> {
|
||||
return;
|
||||
}
|
||||
if (this == LunaSeaDatabase.DRAWER_MANUAL_ORDER) {
|
||||
final item = (value as List)
|
||||
.map((module) => LunaModule.DASHBOARD.fromKey(module))
|
||||
.toList();
|
||||
item.removeWhere((i) => i == null);
|
||||
update(item.cast<LunaModule>() as T);
|
||||
List<LunaModule> item = [];
|
||||
(value as List).cast<String>().forEach((val) {
|
||||
LunaModule? module = LunaModule.DASHBOARD.fromKey(val);
|
||||
if (module != null) item.add(module);
|
||||
});
|
||||
update(item as T);
|
||||
return;
|
||||
}
|
||||
return super.import(value);
|
||||
|
||||
@@ -21,7 +21,7 @@ enum SonarrDatabase<T> with LunaTableMixin<T> {
|
||||
ADD_SERIES_DEFAULT_LANGUAGE_PROFILE<int?>(null),
|
||||
ADD_SERIES_DEFAULT_QUALITY_PROFILE<int?>(null),
|
||||
ADD_SERIES_DEFAULT_ROOT_FOLDER<int?>(null),
|
||||
ADD_SERIES_DEFAULT_TAGS<List?>(null),
|
||||
ADD_SERIES_DEFAULT_TAGS<List>([]),
|
||||
DEFAULT_VIEW_SERIES<LunaListViewOption>(LunaListViewOption.BLOCK_VIEW),
|
||||
DEFAULT_FILTERING_SERIES<SonarrSeriesFilter>(SonarrSeriesFilter.ALL),
|
||||
DEFAULT_FILTERING_RELEASES<SonarrReleasesFilter>(SonarrReleasesFilter.ALL),
|
||||
|
||||
@@ -68,21 +68,19 @@ class LunaBIOS extends StatelessWidget {
|
||||
LunaSeaDatabase.THEME_AMOLED_BORDER.key,
|
||||
]),
|
||||
builder: (context, dynamic box, _) {
|
||||
return Layout(
|
||||
child: MaterialApp(
|
||||
localizationsDelegates: context.localizationDelegates,
|
||||
supportedLocales: context.supportedLocales,
|
||||
locale: context.locale,
|
||||
builder: DevicePreview.appBuilder,
|
||||
routes: router.routes,
|
||||
useInheritedMediaQuery: true,
|
||||
onGenerateRoute: LunaRouter.router.generator,
|
||||
navigatorKey: LunaState.navigatorKey,
|
||||
darkTheme: theme.activeTheme(),
|
||||
theme: theme.activeTheme(),
|
||||
scrollBehavior: LunaScrollBehavior(),
|
||||
title: 'LunaSea',
|
||||
),
|
||||
return MaterialApp(
|
||||
localizationsDelegates: context.localizationDelegates,
|
||||
supportedLocales: context.supportedLocales,
|
||||
locale: context.locale,
|
||||
builder: DevicePreview.appBuilder,
|
||||
routes: router.routes,
|
||||
useInheritedMediaQuery: true,
|
||||
onGenerateRoute: LunaRouter.router.generator,
|
||||
navigatorKey: LunaState.navigatorKey,
|
||||
darkTheme: theme.activeTheme(),
|
||||
theme: theme.activeTheme(),
|
||||
scrollBehavior: LunaScrollBehavior(),
|
||||
title: 'LunaSea',
|
||||
);
|
||||
},
|
||||
),
|
||||
|
||||
@@ -46,7 +46,7 @@ class _State extends State<ModulesPage> with AutomaticKeepAliveClientMixin {
|
||||
List<Widget> _buildAlphabeticalList() {
|
||||
List<Widget> modules = [];
|
||||
int index = 0;
|
||||
LunaModule.DASHBOARD.allModules()
|
||||
LunaModule.active
|
||||
..sort((a, b) => a.name.toLowerCase().compareTo(
|
||||
b.name.toLowerCase(),
|
||||
))
|
||||
|
||||
@@ -24,7 +24,6 @@ class _State extends State<OverseerrIssuesRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.OVERSEERR,
|
||||
hideDrawer: true,
|
||||
body: const OverseerrIssuesListView(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ class _State extends State<OverseerrRequestsRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.OVERSEERR,
|
||||
hideDrawer: true,
|
||||
body: const OverseerrRequestsListView(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ class _State extends State<OverseerrUserRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.OVERSEERR,
|
||||
hideDrawer: true,
|
||||
body: const OverseerrUserListView(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,12 +39,11 @@ class _State extends State<RadarrCatalogueRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body(),
|
||||
appBar: _appBar() as PreferredSizeWidget?,
|
||||
hideDrawer: true,
|
||||
appBar: _appBar(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _appBar() {
|
||||
PreferredSizeWidget _appBar() {
|
||||
return LunaAppBar.empty(
|
||||
child: RadarrCatalogueSearchBar(
|
||||
scrollController: RadarrNavigationBar.scrollControllers[0],
|
||||
|
||||
@@ -27,7 +27,6 @@ class _State extends State<RadarrMissingRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body,
|
||||
hideDrawer: true,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ class _State extends State<RadarrMoreRoute> with AutomaticKeepAliveClientMixin {
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ class _State extends State<RadarrMovieDetailsCastCrewPage>
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
module: LunaModule.RADARR,
|
||||
hideDrawer: true,
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body(),
|
||||
);
|
||||
|
||||
@@ -25,7 +25,6 @@ class _State extends State<RadarrMovieDetailsFilesPage>
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
module: LunaModule.RADARR,
|
||||
hideDrawer: true,
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body(),
|
||||
);
|
||||
|
||||
@@ -28,7 +28,6 @@ class _State extends State<RadarrMovieDetailsHistoryPage>
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
module: LunaModule.RADARR,
|
||||
hideDrawer: true,
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body(),
|
||||
);
|
||||
|
||||
@@ -30,7 +30,6 @@ class _State extends State<RadarrMovieDetailsOverviewPage>
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
module: LunaModule.RADARR,
|
||||
hideDrawer: true,
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: Selector<RadarrState, Future<List<RadarrMovie>>?>(
|
||||
selector: (_, state) => state.movies,
|
||||
|
||||
@@ -27,7 +27,6 @@ class _State extends State<RadarrUpcomingRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body,
|
||||
hideDrawer: true,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
|
||||
}
|
||||
|
||||
List<Widget> _moduleList() {
|
||||
return ([LunaModule.DASHBOARD, ...LunaModule.DASHBOARD.allModules()])
|
||||
return ([LunaModule.DASHBOARD, ...LunaModule.active])
|
||||
.map(_tileFromModuleMap)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ class _State extends State<_Widget> with LunaScrollControllerMixin {
|
||||
LunaModule module = _modules![oIndex];
|
||||
_modules!.remove(module);
|
||||
_modules!.insert(nIndex, module);
|
||||
LunaSeaDatabase.DRAWER_MANUAL_ORDER.update(_modules);
|
||||
LunaSeaDatabase.DRAWER_MANUAL_ORDER.update(_modules!);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
@@ -128,8 +128,8 @@ class SonarrSeriesAddDetailsState extends ChangeNotifier {
|
||||
|
||||
void initializeTags(List<SonarrTag> tags) {
|
||||
_tags = tags
|
||||
.where((tag) => (SonarrDatabase.ADD_SERIES_DEFAULT_TAGS.read() ?? [])
|
||||
.contains(tag.id))
|
||||
.where((tag) =>
|
||||
(SonarrDatabase.ADD_SERIES_DEFAULT_TAGS.read()).contains(tag.id))
|
||||
.toList();
|
||||
}
|
||||
|
||||
|
||||
@@ -42,13 +42,12 @@ class _State extends State<SonarrCatalogueRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
appBar: _appBar() as PreferredSizeWidget?,
|
||||
appBar: _appBar(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _appBar() {
|
||||
PreferredSizeWidget _appBar() {
|
||||
return LunaAppBar.empty(
|
||||
child: SonarrSeriesSearchBar(
|
||||
scrollController: SonarrNavigationBar.scrollControllers[0],
|
||||
|
||||
@@ -33,7 +33,6 @@ class _State extends State<SonarrMissingRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ class _State extends State<SonarrMoreRoute> with AutomaticKeepAliveClientMixin {
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ class _State extends State<SonarrSeriesDetailsHistoryPage>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ class _State extends State<SonarrSeriesDetailsOverviewPage>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: Selector<SonarrState, Future<Map<int?, SonarrSeries>>?>(
|
||||
selector: (_, state) => state.series,
|
||||
builder: (context, movies, _) => LunaListView(
|
||||
|
||||
@@ -23,7 +23,6 @@ class _State extends State<SonarrSeriesDetailsSeasonsPage> {
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ class _State extends State<SonarrUpcomingRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.SONARR,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ class _State extends State<TautulliActivityRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ class _State extends State<TautulliHistoryRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ class _State extends State<TautulliMoreRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ class _State extends State<TautulliUsersRoute>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ class _State extends State<TautulliUserDetailsHistory>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,6 @@ class _State extends State<TautulliUserDetailsIPAddresses>
|
||||
super.build(context);
|
||||
return LunaScaffold(
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
scaffoldKey: _scaffoldKey,
|
||||
body: _body(),
|
||||
);
|
||||
|
||||
@@ -67,7 +67,6 @@ class _State extends State<TautulliUserDetailsProfile>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _initialLoad ? _body() : const LunaLoader(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,6 @@ class _State extends State<TautulliUserDetailsSyncedItems>
|
||||
return LunaScaffold(
|
||||
scaffoldKey: _scaffoldKey,
|
||||
module: LunaModule.TAUTULLI,
|
||||
hideDrawer: true,
|
||||
body: _body(),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ export 'package:hive/hive.dart';
|
||||
export 'package:hive_flutter/hive_flutter.dart';
|
||||
export 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
|
||||
export 'package:json_annotation/json_annotation.dart';
|
||||
export 'package:layout/layout.dart';
|
||||
export 'package:package_info_plus/package_info_plus.dart';
|
||||
export 'package:stash/stash_api.dart';
|
||||
export 'package:stash_memory/stash_memory.dart';
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
@@ -216,8 +215,6 @@ class _State extends State<LunaAppBar> {
|
||||
|
||||
Widget? _sharedLeading(BuildContext context) {
|
||||
if (widget.hideLeading) return null;
|
||||
if (kDebugMode && context.breakpoint >= LayoutBreakpoint.md) return null;
|
||||
|
||||
if (widget.useDrawer)
|
||||
return SizedBox(
|
||||
child: LunaIconButton.appBar(
|
||||
|
||||
@@ -10,18 +10,26 @@ class LunaDrawer extends StatelessWidget {
|
||||
required this.page,
|
||||
}) : super(key: key);
|
||||
|
||||
static List<LunaModule> moduleAlphabeticalList() {
|
||||
return LunaModule.active
|
||||
..sort((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase()));
|
||||
}
|
||||
|
||||
static List<LunaModule> moduleOrderedList() {
|
||||
final db = LunaSeaDatabase.DRAWER_MANUAL_ORDER.read();
|
||||
final modules = db?.cast<LunaModule>() ?? LunaModule.DASHBOARD.allModules();
|
||||
try {
|
||||
const db = LunaSeaDatabase.DRAWER_MANUAL_ORDER;
|
||||
final modules = List.from(db.read());
|
||||
final missing = LunaModule.active;
|
||||
|
||||
// Add any modules that were added after the user set their drawer order preference
|
||||
List<LunaModule> _missing = LunaModule.DASHBOARD.allModules()
|
||||
..retainWhere((module) => !modules.contains(module));
|
||||
modules
|
||||
..addAll(_missing)
|
||||
..retainWhere((module) => module.featureFlag);
|
||||
missing.retainWhere((m) => !modules.contains(m));
|
||||
modules.addAll(missing);
|
||||
modules.retainWhere((m) => (m as LunaModule).featureFlag);
|
||||
|
||||
return modules;
|
||||
return modules.cast<LunaModule>();
|
||||
} catch (error, stack) {
|
||||
LunaLogger().error('Failed to create ordered module list', error, stack);
|
||||
return moduleAlphabeticalList();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -39,9 +47,12 @@ class LunaDrawer extends StatelessWidget {
|
||||
Expanded(
|
||||
child: LunaListView(
|
||||
controller: PrimaryScrollController.of(context),
|
||||
children: LunaSeaDatabase.DRAWER_AUTOMATIC_MANAGE.read()
|
||||
? _getAlphabeticalOrder(context)
|
||||
: _getManualOrder(context),
|
||||
children: _moduleList(
|
||||
context,
|
||||
LunaSeaDatabase.DRAWER_AUTOMATIC_MANAGE.read()
|
||||
? moduleAlphabeticalList()
|
||||
: moduleOrderedList(),
|
||||
),
|
||||
physics: const ClampingScrollPhysics(),
|
||||
padding: MediaQuery.of(context).padding.copyWith(top: 0),
|
||||
),
|
||||
@@ -63,29 +74,10 @@ class LunaDrawer extends StatelessWidget {
|
||||
];
|
||||
}
|
||||
|
||||
List<Widget> _getAlphabeticalOrder(BuildContext context) {
|
||||
List<LunaModule> _modules = LunaModule.DASHBOARD.allModules()
|
||||
..sort((a, b) => a.name.toLowerCase().compareTo(b.name.toLowerCase()));
|
||||
List<Widget> _moduleList(BuildContext context, List<LunaModule> modules) {
|
||||
return <Widget>[
|
||||
..._sharedHeader(context),
|
||||
..._modules.map((module) {
|
||||
if (module.isEnabled) {
|
||||
return _buildEntry(
|
||||
context: context,
|
||||
module: module,
|
||||
onTap: module == LunaModule.WAKE_ON_LAN ? _wakeOnLAN : null,
|
||||
);
|
||||
}
|
||||
return const SizedBox(height: 0.0);
|
||||
}),
|
||||
];
|
||||
}
|
||||
|
||||
List<Widget> _getManualOrder(BuildContext context) {
|
||||
List<LunaModule> _modules = moduleOrderedList();
|
||||
return <Widget>[
|
||||
..._sharedHeader(context),
|
||||
..._modules.map((module) {
|
||||
...modules.map((module) {
|
||||
if (module.isEnabled) {
|
||||
return _buildEntry(
|
||||
context: context,
|
||||
@@ -101,7 +93,7 @@ class LunaDrawer extends StatelessWidget {
|
||||
Widget _buildEntry({
|
||||
required BuildContext context,
|
||||
required LunaModule module,
|
||||
Function? onTap,
|
||||
void Function()? onTap,
|
||||
}) {
|
||||
bool currentPage = page == module.key.toLowerCase();
|
||||
return SizedBox(
|
||||
@@ -126,10 +118,9 @@ class LunaDrawer extends StatelessWidget {
|
||||
),
|
||||
],
|
||||
),
|
||||
onTap: onTap as void Function()? ??
|
||||
onTap: onTap ??
|
||||
() async {
|
||||
LayoutBreakpoint _bp = context.breakpoint;
|
||||
if (_bp < LayoutBreakpoint.md) Navigator.of(context).pop();
|
||||
Navigator.of(context).pop();
|
||||
if (!currentPage) module.launch();
|
||||
},
|
||||
),
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:lunasea/core.dart';
|
||||
|
||||
@@ -12,7 +11,6 @@ class LunaScaffold extends StatelessWidget {
|
||||
final Widget? floatingActionButton;
|
||||
final bool extendBody;
|
||||
final bool extendBodyBehindAppBar;
|
||||
final bool hideDrawer;
|
||||
|
||||
/// Called when [LunaSeaDatabase.ENABLED_PROFILE] has changed. Triggered within the build function.
|
||||
final void Function(BuildContext)? onProfileChange;
|
||||
@@ -29,71 +27,32 @@ class LunaScaffold extends StatelessWidget {
|
||||
this.extendBody = false,
|
||||
this.extendBodyBehindAppBar = false,
|
||||
this.onProfileChange,
|
||||
this.hideDrawer = false,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (drawer != null)
|
||||
return LunaWillPopScope(
|
||||
scaffoldKey: scaffoldKey,
|
||||
child: scaffold,
|
||||
);
|
||||
return scaffold;
|
||||
return LunaWillPopScope(
|
||||
scaffoldKey: scaffoldKey,
|
||||
child: scaffold,
|
||||
);
|
||||
}
|
||||
|
||||
Widget get scaffold {
|
||||
return ValueListenableBuilder(
|
||||
valueListenable: LunaBox.lunasea.box.listenable(
|
||||
keys: [LunaSeaDatabase.ENABLED_PROFILE.key],
|
||||
),
|
||||
builder: (context, dynamic _, __) {
|
||||
if (onProfileChange != null) onProfileChange!(context);
|
||||
return AdaptiveBuilder.builder(
|
||||
builder: (context, layout, child) {
|
||||
if (kDebugMode && layout.breakpoint >= LayoutBreakpoint.md)
|
||||
return _scaffoldMedium(child!);
|
||||
return _scaffoldSmall(child);
|
||||
},
|
||||
child: body,
|
||||
return LunaSeaDatabase.ENABLED_PROFILE.listen(
|
||||
builder: (context, _) {
|
||||
onProfileChange?.call(context);
|
||||
return Scaffold(
|
||||
key: scaffoldKey,
|
||||
appBar: appBar,
|
||||
body: body,
|
||||
drawer: drawer,
|
||||
bottomNavigationBar: bottomNavigationBar,
|
||||
floatingActionButton: floatingActionButton,
|
||||
extendBody: extendBody,
|
||||
extendBodyBehindAppBar: extendBodyBehindAppBar,
|
||||
onDrawerChanged: (_) => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget _scaffoldSmall(Widget? child) {
|
||||
return Scaffold(
|
||||
key: scaffoldKey,
|
||||
appBar: appBar,
|
||||
body: child,
|
||||
drawer: hideDrawer ? null : drawer,
|
||||
bottomNavigationBar: bottomNavigationBar,
|
||||
floatingActionButton: floatingActionButton,
|
||||
extendBody: extendBody,
|
||||
extendBodyBehindAppBar: extendBodyBehindAppBar,
|
||||
onDrawerChanged: (_) => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _scaffoldMedium(Widget child) => Scaffold(
|
||||
key: scaffoldKey,
|
||||
body: Row(
|
||||
children: [
|
||||
if (!hideDrawer) LunaDrawer(page: module?.key ?? ''),
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [
|
||||
if (appBar != null) appBar!,
|
||||
Expanded(child: child),
|
||||
if (bottomNavigationBar != null) bottomNavigationBar!,
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
floatingActionButton: floatingActionButton,
|
||||
extendBody: extendBody,
|
||||
extendBodyBehindAppBar: extendBodyBehindAppBar,
|
||||
onDrawerChanged: (_) => FocusManager.instance.primaryFocus?.unfocus(),
|
||||
);
|
||||
}
|
||||
|
||||
157
pubspec.lock
157
pubspec.lock
@@ -56,7 +56,7 @@ packages:
|
||||
name: build
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.3.0"
|
||||
build_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -77,7 +77,7 @@ packages:
|
||||
name: build_resolvers
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.6"
|
||||
version: "2.0.9"
|
||||
build_runner:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
@@ -105,7 +105,7 @@ packages:
|
||||
name: built_value
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "8.1.4"
|
||||
version: "8.3.2"
|
||||
cached_network_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -134,13 +134,6 @@ packages:
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
charcode:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: charcode
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
checked_yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -175,21 +168,21 @@ packages:
|
||||
name: cloud_firestore
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.16"
|
||||
version: "3.1.17"
|
||||
cloud_firestore_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cloud_firestore_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "5.5.6"
|
||||
version: "5.5.7"
|
||||
cloud_firestore_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cloud_firestore_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.6.15"
|
||||
version: "2.6.16"
|
||||
code_builder:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -210,14 +203,14 @@ packages:
|
||||
name: convert
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
dart_console:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -231,7 +224,7 @@ packages:
|
||||
name: dart_style
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
version: "2.2.3"
|
||||
device_frame:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -322,14 +315,14 @@ packages:
|
||||
name: fading_edge_scrollview
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.0"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
version: "1.2.1"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -343,35 +336,35 @@ packages:
|
||||
name: file_picker
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.5.1"
|
||||
version: "4.6.0"
|
||||
firebase_auth:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_auth
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.3.18"
|
||||
version: "3.3.19"
|
||||
firebase_auth_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_auth_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.2.6"
|
||||
version: "6.2.7"
|
||||
firebase_auth_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_auth_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.3.15"
|
||||
version: "3.3.16"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_core
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.17.1"
|
||||
firebase_core_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -392,49 +385,49 @@ packages:
|
||||
name: firebase_messaging
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
version: "11.4.1"
|
||||
firebase_messaging_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.5.0"
|
||||
version: "3.5.1"
|
||||
firebase_messaging_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_messaging_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
firebase_storage:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_storage
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "10.2.16"
|
||||
version: "10.2.17"
|
||||
firebase_storage_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_storage_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.1.6"
|
||||
version: "4.1.7"
|
||||
firebase_storage_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_storage_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.2.15"
|
||||
version: "3.2.16"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fixnum
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.1"
|
||||
fl_chart:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -467,7 +460,7 @@ packages:
|
||||
name: flutter_blurhash
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.6.4"
|
||||
version: "0.7.0"
|
||||
flutter_cache_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -500,14 +493,14 @@ packages:
|
||||
name: flutter_native_splash
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.2.2"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
version: "2.0.6"
|
||||
flutter_riverpod:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -540,7 +533,7 @@ packages:
|
||||
name: frontend_server_client
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
gap:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -568,7 +561,7 @@ packages:
|
||||
name: go_router
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
version: "3.1.1"
|
||||
google_nav_bar:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -624,7 +617,7 @@ packages:
|
||||
name: http_parser
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
version: "4.0.1"
|
||||
image:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -645,7 +638,7 @@ packages:
|
||||
name: in_app_purchase_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.2.2+2"
|
||||
version: "0.2.2+6"
|
||||
in_app_purchase_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -659,7 +652,7 @@ packages:
|
||||
name: in_app_purchase_storekit
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.3.0+3"
|
||||
version: "0.3.0+8"
|
||||
infinite_scroll_pagination:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -757,7 +750,7 @@ packages:
|
||||
name: mime
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
version: "1.0.2"
|
||||
modal_bottom_sheet:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -785,7 +778,7 @@ packages:
|
||||
name: octo_image
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
version: "1.0.2"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -855,42 +848,42 @@ packages:
|
||||
name: path_provider_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.12"
|
||||
version: "2.0.14"
|
||||
path_provider_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_ios
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.8"
|
||||
version: "2.0.9"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_linux
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.1.7"
|
||||
path_provider_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_macos
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
version: "2.0.6"
|
||||
path_provider_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
version: "2.0.4"
|
||||
path_provider_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
version: "2.0.7"
|
||||
pedantic:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -932,7 +925,7 @@ packages:
|
||||
name: pointycastle
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.5.2"
|
||||
version: "3.6.0"
|
||||
pool:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -953,7 +946,7 @@ packages:
|
||||
name: provider
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
version: "6.0.3"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -981,14 +974,14 @@ packages:
|
||||
name: quick_actions_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.6.0+9"
|
||||
version: "0.6.0+10"
|
||||
quick_actions_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: quick_actions_ios
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.6.0+9"
|
||||
version: "0.6.0+10"
|
||||
quick_actions_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1002,7 +995,7 @@ packages:
|
||||
name: quiver
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.1+1"
|
||||
version: "3.1.0"
|
||||
retrofit:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1030,14 +1023,14 @@ packages:
|
||||
name: rxdart
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.27.3"
|
||||
version: "0.27.4"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: share_plus
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "4.0.4"
|
||||
version: "4.0.5"
|
||||
share_plus_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1051,63 +1044,63 @@ packages:
|
||||
name: share_plus_macos
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
share_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
share_plus_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
share_plus_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: share_plus_windows
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
shared_preferences:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.13"
|
||||
version: "2.0.15"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.11"
|
||||
version: "2.0.12"
|
||||
shared_preferences_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_ios
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.1.1"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_linux
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.1.1"
|
||||
shared_preferences_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_macos
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
version: "2.0.4"
|
||||
shared_preferences_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1121,14 +1114,14 @@ packages:
|
||||
name: shared_preferences_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
version: "2.0.4"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_windows
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.1.1"
|
||||
shelf:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1175,42 +1168,42 @@ packages:
|
||||
name: sliver_tools
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.2.5"
|
||||
version: "0.2.6"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_gen
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.2.2"
|
||||
source_helper:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_helper
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.3.2"
|
||||
source_span:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_span
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.9.0"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
version: "2.0.2+1"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
version: "2.2.1+1"
|
||||
stack_trace:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1259,7 +1252,7 @@ packages:
|
||||
name: string_scanner
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
supercharged:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1287,7 +1280,7 @@ packages:
|
||||
name: table_calendar
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.0.6"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1322,7 +1315,7 @@ packages:
|
||||
name: typed_data
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.3.1"
|
||||
universal_io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1343,28 +1336,28 @@ packages:
|
||||
name: url_launcher_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.0.15"
|
||||
version: "6.0.17"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.0.15"
|
||||
version: "6.0.17"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1378,14 +1371,14 @@ packages:
|
||||
name: url_launcher_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.9"
|
||||
version: "2.0.11"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
version: "3.0.1"
|
||||
uuid:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1420,14 +1413,14 @@ packages:
|
||||
name: web_socket_channel
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
version: "2.2.0"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.5.1"
|
||||
version: "2.6.1"
|
||||
window_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1448,7 +1441,7 @@ packages:
|
||||
name: xml
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "6.0.1"
|
||||
version: "6.1.0"
|
||||
yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
||||
26
pubspec.yaml
26
pubspec.yaml
@@ -10,9 +10,9 @@ dependencies:
|
||||
sdk: flutter
|
||||
badges: ^2.0.2
|
||||
cached_network_image: ^3.2.1
|
||||
cloud_firestore: ^3.1.16
|
||||
cloud_firestore: ^3.1.17
|
||||
collection: ^1.15.0
|
||||
convert: ^3.0.1
|
||||
convert: ^3.0.2
|
||||
device_preview: ^1.1.0
|
||||
dio: ^4.0.6
|
||||
easy_localization: ^3.0.1
|
||||
@@ -20,19 +20,19 @@ dependencies:
|
||||
encrypt: ^5.0.1
|
||||
envify: ^2.0.2
|
||||
expandable: ^5.0.1
|
||||
fading_edge_scrollview: ^2.0.1
|
||||
file_picker: ^4.5.1
|
||||
firebase_auth: ^3.3.18
|
||||
firebase_core: ^1.17.0
|
||||
firebase_messaging: ^11.4.0
|
||||
firebase_storage: ^10.2.16
|
||||
fading_edge_scrollview: ^3.0.0
|
||||
file_picker: ^4.6.0
|
||||
firebase_auth: ^3.3.19
|
||||
firebase_core: ^1.17.1
|
||||
firebase_messaging: ^11.4.1
|
||||
firebase_storage: ^10.2.17
|
||||
fl_chart: ^0.46.0
|
||||
flash: ^2.0.3+2
|
||||
fluro: ^2.0.3
|
||||
flutter_cache_manager: ^3.3.0
|
||||
flutter_riverpod: ^2.0.0-dev.9
|
||||
flutter_spinkit: ^5.1.0
|
||||
go_router: ^3.1.0
|
||||
go_router: ^3.1.1
|
||||
google_nav_bar: ^5.0.6
|
||||
hive: ^2.2.1
|
||||
hive_flutter: ^1.1.0
|
||||
@@ -47,19 +47,19 @@ dependencies:
|
||||
percent_indicator: ^4.2.2
|
||||
quick_actions: ^0.6.0+11
|
||||
retrofit: ^3.0.1+1
|
||||
share_plus: ^4.0.4
|
||||
share_plus: ^4.0.5
|
||||
shimmer: ^2.0.0
|
||||
stack_trace: ^1.10.0
|
||||
stash_memory: ^4.0.1
|
||||
supercharged: ^2.1.1
|
||||
table_calendar: ^3.0.5
|
||||
table_calendar: ^3.0.6
|
||||
transparent_image: ^2.0.0
|
||||
tuple: ^2.0.0
|
||||
url_launcher: ^6.1.2
|
||||
uuid: ^3.0.6
|
||||
wake_on_lan: ^3.0.0
|
||||
window_manager: ^0.2.3
|
||||
xml: ^6.0.1
|
||||
xml: ^6.1.0
|
||||
simple_icons: ^6.13.0
|
||||
|
||||
dev_dependencies:
|
||||
@@ -72,7 +72,7 @@ dev_dependencies:
|
||||
# Tooling
|
||||
flutter_launcher_icons: ^0.9.2
|
||||
flutter_lints: ^2.0.1
|
||||
flutter_native_splash: ^2.2.1
|
||||
flutter_native_splash: ^2.2.2
|
||||
msix: ^3.6.2
|
||||
|
||||
dependency_overrides:
|
||||
|
||||
Reference in New Issue
Block a user