Merge pull request #17 from pangeachat/new-date-picker

New date picker
pull/795/head
wcjord 2 years ago committed by GitHub
commit b40ac746c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,9 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:go_router/go_router.dart';
import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/archive/archive.dart'; import 'package:fluffychat/pages/archive/archive.dart';
import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pages/chat/chat.dart';
@ -42,6 +38,9 @@ import 'package:fluffychat/widgets/layouts/empty_page.dart';
import 'package:fluffychat/widgets/layouts/two_column_layout.dart'; import 'package:fluffychat/widgets/layouts/two_column_layout.dart';
import 'package:fluffychat/widgets/log_view.dart'; import 'package:fluffychat/widgets/log_view.dart';
import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/cupertino.dart';
import 'package:go_router/go_router.dart';
import '../pangea/pages/analytics/class_analytics/class_analytics.dart'; import '../pangea/pages/analytics/class_analytics/class_analytics.dart';
import '../pangea/pages/analytics/class_list/class_list.dart'; import '../pangea/pages/analytics/class_list/class_list.dart';
@ -109,6 +108,16 @@ abstract class AppRoutes {
const LogViewer(), const LogViewer(),
), ),
), ),
// #Pangea
GoRoute(
path: '/user_age',
pageBuilder: (context, state) => defaultPageBuilder(
context,
const PUserAge(),
),
redirect: loggedOutRedirect,
),
// Pangea#
ShellRoute( ShellRoute(
pageBuilder: (context, state, child) => defaultPageBuilder( pageBuilder: (context, state, child) => defaultPageBuilder(
context, context,
@ -160,14 +169,6 @@ abstract class AppRoutes {
), ),
routes: [ routes: [
// #Pangea // #Pangea
GoRoute(
path: 'user_age',
pageBuilder: (context, state) => defaultPageBuilder(
context,
const PUserAge(),
),
redirect: loggedOutRedirect,
),
GoRoute( GoRoute(
path: 'mylearning', path: 'mylearning',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(

@ -1,10 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:fluffychat/widgets/matrix.dart';
import '../controllers/pangea_controller.dart'; import '../controllers/pangea_controller.dart';
class PAuthGaurd { class PAuthGaurd {
@ -19,7 +18,7 @@ class PAuthGaurd {
final bool setDob = await pController! final bool setDob = await pController!
.userController.isUserDataAvailableAndDateOfBirthSet; .userController.isUserDataAvailableAndDateOfBirthSet;
if (Matrix.of(context).client.isLogged()) { if (Matrix.of(context).client.isLogged()) {
return !setDob ? '/rooms/user_age' : '/rooms'; return !setDob ? '/user_age' : '/rooms';
} }
return null; return null;
} else { } else {
@ -39,7 +38,7 @@ class PAuthGaurd {
return !Matrix.of(context).client.isLogged() return !Matrix.of(context).client.isLogged()
? '/home' ? '/home'
: !setDob : !setDob
? '/rooms/user_age' ? '/user_age'
: null; : null;
} else { } else {
debugPrint("controller is null in pguard check"); debugPrint("controller is null in pguard check");

@ -1,9 +1,9 @@
import 'package:fluffychat/pangea/pages/p_user_age/p_user_age.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:syncfusion_flutter_datepicker/datepicker.dart';
import 'package:fluffychat/pangea/pages/p_user_age/p_user_age.dart';
import '../../../widgets/layouts/login_scaffold.dart'; import '../../../widgets/layouts/login_scaffold.dart';
class PUserAgeView extends StatelessWidget { class PUserAgeView extends StatelessWidget {
@ -12,7 +12,6 @@ class PUserAgeView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
controller.dobController.text = "";
return LoginScaffold( return LoginScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !controller.loading, automaticallyImplyLeading: !controller.loading,
@ -45,21 +44,52 @@ class PUserAgeView extends StatelessWidget {
controller.loading ? null : [AutofillHints.birthday], controller.loading ? null : [AutofillHints.birthday],
validator: controller.dobFieldValidator, validator: controller.dobFieldValidator,
onTap: () async { onTap: () async {
final DateTime? pickedDate = await showDatePicker( showDialog(
initialDatePickerMode: DatePickerMode.year,
context: context, context: context,
initialDate: controller.initialDate, builder: (BuildContext context) {
firstDate: DateTime(1940), return Center(
lastDate: DateTime.now(), child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(25),
color: Theme.of(context).colorScheme.background,
),
padding: const EdgeInsets.all(12),
// height: 350,
width: 500,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Card(
child: SfDateRangePicker(
view: DateRangePickerView.month,
showNavigationArrow: true,
showActionButtons: true,
selectionMode:
DateRangePickerSelectionMode.single,
initialDisplayDate: controller.initialDate,
initialSelectedDate: controller.initialDate,
onSubmit: (val) {
final DateTime? pickedDate =
val as DateTime?;
if (pickedDate != null) {
controller.dobController.text =
DateFormat.yMd().format(pickedDate);
controller.error = null;
} else {
controller.error =
L10n.of(context)!.invalidDob;
}
Navigator.pop(context);
},
onCancel: () => Navigator.pop(context),
),
),
],
),
),
);
},
); );
if (pickedDate != null) {
controller.dobController.text =
DateFormat.yMd().format(pickedDate);
controller.error = null;
} else {
controller.error = L10n.of(context)!.invalidDob;
}
}, },
// onChanged: (String newValue) { // onChanged: (String newValue) {
// try { // try {

@ -2,12 +2,19 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:desktop_notifications/desktop_notifications.dart'; import 'package:desktop_notifications/desktop_notifications.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/uia_request_manager.dart';
import 'package:fluffychat/utils/voip_plugin.dart';
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
@ -19,14 +26,6 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:universal_html/html.dart' as html; import 'package:universal_html/html.dart' as html;
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/utils/uia_request_manager.dart';
import 'package:fluffychat/utils/voip_plugin.dart';
import 'package:fluffychat/widgets/fluffy_chat_app.dart';
import '../config/app_config.dart'; import '../config/app_config.dart';
import '../config/setting_keys.dart'; import '../config/setting_keys.dart';
import '../pages/key_verification/key_verification_dialog.dart'; import '../pages/key_verification/key_verification_dialog.dart';
@ -354,7 +353,7 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
routeDestination = await pangeaController routeDestination = await pangeaController
.userController.isUserDataAvailableAndDateOfBirthSet .userController.isUserDataAvailableAndDateOfBirthSet
? '/rooms' ? '/rooms'
: "/rooms/user_age"; : "/user_age";
} else { } else {
routeDestination = '/home'; routeDestination = '/home';
} }

@ -2047,26 +2047,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: syncfusion_flutter_core name: syncfusion_flutter_core
sha256: "9f0a4593f7642b2f106e329734d0e5fc746baf8d0a59495eec586cd0d9ba7d02" sha256: a2427697bfad5b611db78ea4c4daef82d3350b83c729a8dc37959662a31547f9
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "22.2.12" version: "23.2.7"
syncfusion_flutter_datepicker:
dependency: "direct main"
description:
name: syncfusion_flutter_datepicker
sha256: b3340a7786f674d18bd22c226358648985e7631734dfc4aae09fdcfb71c09156
url: "https://pub.dev"
source: hosted
version: "23.2.7"
syncfusion_flutter_xlsio: syncfusion_flutter_xlsio:
dependency: "direct main" dependency: "direct main"
description: description:
name: syncfusion_flutter_xlsio name: syncfusion_flutter_xlsio
sha256: "66b009fce91e10cfa5d9b3cdf2c4aa3fdf7430dab159626f4c67297638da2caf" sha256: "84c771ce3684820e930d27604e801991efaa0e7a72ee1df4ba4c843258f16285"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "22.2.12" version: "23.2.7"
syncfusion_officecore: syncfusion_officecore:
dependency: transitive dependency: transitive
description: description:
name: syncfusion_officecore name: syncfusion_officecore
sha256: "66d0a0faba40f043bba4ef102474213d3145ffeca2b3f2351a98c0cc10079c27" sha256: a037c8a72748332ba28723eaed2fd1656b9acdaf03c23c6a08e87f7c31dbed18
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "22.2.12" version: "23.2.7"
synchronized: synchronized:
dependency: transitive dependency: transitive
description: description:

@ -99,7 +99,8 @@ dependencies:
shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401
slugify: ^2.0.0 slugify: ^2.0.0
swipe_to_action: ^0.2.0 swipe_to_action: ^0.2.0
syncfusion_flutter_xlsio: ^22.2.9 syncfusion_flutter_datepicker: ^23.2.7
syncfusion_flutter_xlsio: ^23.2.7
tor_detector_web: ^1.1.0 tor_detector_web: ^1.1.0
uni_links: ^0.5.1 uni_links: ^0.5.1
unifiedpush: ^5.0.1 unifiedpush: ^5.0.1

Loading…
Cancel
Save