Files
lunasea/lib/modules/dashboard/core/dialogs.dart
Jagandeep Brar a1d68cd234 [share_plus] iOS 12 and lower crashes at launch due to missing LinkPresentation.framework (#442)
* chore(packages): Added pedantic package to enforce linting and styling
* feat(lunasea): Enforce effective dart styling
* Comment and format colours class
* Localize additional classes in Dashboard, cleanup additional code
* chore(lunasea): Major refactor by running dartfmt on the entire codebase, added widget return for page routers
* Additional work on conforming to effective dart style
* fix(share_plus): Roll back share_plus package to 2.0.0 to support iOS 12 or lower
* chore(lunasea): Fix remaining enabled analysis warnings
2021-04-24 04:26:39 -05:00

130 lines
3.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:lunasea/core.dart';
import 'package:lunasea/modules/dashboard.dart';
class DashboardDialogs {
Future<Tuple2<bool, int>> defaultPage(BuildContext context) async {
bool _flag = false;
int _index = 0;
void _setValues(bool flag, int index) {
_flag = flag;
_index = index;
Navigator.of(context, rootNavigator: true).pop();
}
await LunaDialog.dialog(
context: context,
title: 'lunasea.Page'.tr(),
content: List.generate(
DashboardNavigationBar.titles.length,
(index) => LunaDialog.tile(
text: DashboardNavigationBar.titles[index],
icon: DashboardNavigationBar.icons[index],
iconColor: LunaColours().byListIndex(index),
onTap: () => _setValues(true, index),
),
),
contentPadding: LunaDialog.listDialogContentPadding(),
);
return Tuple2(_flag, _index);
}
Future<Tuple2<bool, int>> setPastDays(BuildContext context) async {
bool _flag = false;
GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TextEditingController _textController = TextEditingController(
text: DashboardDatabaseValue.CALENDAR_DAYS_PAST.data.toString(),
);
void _setValues(bool flag) {
if (_formKey.currentState.validate()) {
_flag = flag;
Navigator.of(context, rootNavigator: true).pop();
}
}
await LunaDialog.dialog(
context: context,
title: 'dashboard.PastDays'.tr(),
buttons: [
LunaDialog.button(
text: 'lunasea.Set'.tr(),
onPressed: () => _setValues(true),
),
],
content: [
LunaDialog.textContent(
text: 'dashboard.PastDaysDescription'.tr(),
),
Form(
key: _formKey,
child: LunaDialog.textFormInput(
controller: _textController,
title: 'dashboard.PastDays'.tr(),
onSubmitted: (_) => _setValues(true),
validator: (value) {
int _value = int.tryParse(value);
if (_value != null && _value >= 1) return null;
return 'dashboard.MinimumOfOneDay'.tr();
},
keyboardType: TextInputType.number,
),
),
],
contentPadding: LunaDialog.inputTextDialogContentPadding(),
);
return Tuple2(_flag, int.tryParse(_textController.text) ?? 14);
}
Future<Tuple2<bool, int>> setFutureDays(BuildContext context) async {
bool _flag = false;
GlobalKey<FormState> _formKey = GlobalKey<FormState>();
TextEditingController _textController = TextEditingController(
text: DashboardDatabaseValue.CALENDAR_DAYS_FUTURE.data.toString(),
);
void _setValues(bool flag) {
if (_formKey.currentState.validate()) {
_flag = flag;
Navigator.of(context, rootNavigator: true).pop();
}
}
await LunaDialog.dialog(
context: context,
title: 'dashboard.FutureDays'.tr(),
buttons: [
LunaDialog.button(
text: 'lunasea.Set'.tr(),
onPressed: () => _setValues(true),
),
],
content: [
LunaDialog.textContent(
text: 'dashboard.FutureDaysDescription'.tr(),
),
Form(
key: _formKey,
child: LunaDialog.textFormInput(
controller: _textController,
title: 'dashboard.FutureDays'.tr(),
onSubmitted: (_) => _setValues(true),
validator: (value) {
int _value = int.tryParse(value);
if (_value != null && _value >= 1) return null;
return 'dashboard.MinimumOfOneDay'.tr();
},
keyboardType: TextInputType.number,
),
),
],
contentPadding: LunaDialog.inputTextDialogContentPadding(),
);
return Tuple2(_flag, int.tryParse(_textController.text) ?? 14);
}
}