From ae6291179e6b4f8ec45be2b9f8fe8809be8f64f9 Mon Sep 17 00:00:00 2001
From: OleksandrSobol <dr.alexander.sobol@gmail.com>
Date: Thu, 1 Oct 2020 20:29:06 +0300
Subject: [PATCH] CAKE-97 | created date_picker for Android and iOS; applied
 date picker to blockchain_height_widget

---
 lib/src/widgets/blockchain_height_widget.dart |  3 +-
 lib/utils/date_picker.dart                    | 54 +++++++++++++++++++
 lib/utils/show_pop_up.dart                    |  4 +-
 pubspec.lock                                  |  6 +--
 4 files changed, 61 insertions(+), 6 deletions(-)
 create mode 100644 lib/utils/date_picker.dart

diff --git a/lib/src/widgets/blockchain_height_widget.dart b/lib/src/widgets/blockchain_height_widget.dart
index 87d64b222..de242d451 100644
--- a/lib/src/widgets/blockchain_height_widget.dart
+++ b/lib/src/widgets/blockchain_height_widget.dart
@@ -1,3 +1,4 @@
+import 'package:cake_wallet/utils/date_picker.dart';
 import 'package:flutter/material.dart';
 import 'package:intl/intl.dart';
 import 'package:cake_wallet/generated/i18n.dart';
@@ -88,7 +89,7 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
 
   Future _selectDate(BuildContext context) async {
     final now = DateTime.now();
-    final date = await showDatePicker(
+    final date = await getDate(
         context: context,
         initialDate: now.subtract(Duration(days: 1)),
         firstDate: DateTime(2014, DateTime.april),
diff --git a/lib/utils/date_picker.dart b/lib/utils/date_picker.dart
new file mode 100644
index 000000000..78e49666d
--- /dev/null
+++ b/lib/utils/date_picker.dart
@@ -0,0 +1,54 @@
+import 'dart:io';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+
+Future<DateTime> getDate({
+  @required BuildContext context,
+  @required DateTime initialDate,
+  @required DateTime firstDate,
+  @required DateTime lastDate}) {
+
+  if (Platform.isIOS) {
+    return _buildCupertinoDataPicker(context, initialDate, firstDate, lastDate);
+  }
+
+  return _buildMaterialDataPicker(context, initialDate, firstDate, lastDate);
+}
+
+Future<DateTime> _buildMaterialDataPicker(
+  BuildContext context,
+  DateTime initialDate,
+  DateTime firstDate,
+  DateTime lastDate) async {
+  return await showDatePicker(
+      context: context,
+      initialDate: initialDate,
+      firstDate: firstDate,
+      lastDate: lastDate,
+      helpText: '');
+}
+
+Future<DateTime> _buildCupertinoDataPicker(
+  BuildContext context,
+  DateTime initialDate,
+  DateTime firstDate,
+  DateTime lastDate) async {
+  DateTime date;
+  await showModalBottomSheet<void>(
+      context: context,
+      builder: (_) {
+        return Container(
+          height: MediaQuery.of(context).size.height / 3,
+          child: CupertinoDatePicker(
+            mode: CupertinoDatePickerMode.date,
+            onDateTimeChanged: (picked) => date = picked,
+            initialDateTime: initialDate,
+            minimumDate: firstDate,
+            maximumDate: lastDate,
+            backgroundColor: Colors.white,
+          ),
+        );
+      }
+  );
+  return date;
+}
\ No newline at end of file
diff --git a/lib/utils/show_pop_up.dart b/lib/utils/show_pop_up.dart
index 280bcff3c..a97fb3762 100644
--- a/lib/utils/show_pop_up.dart
+++ b/lib/utils/show_pop_up.dart
@@ -14,8 +14,8 @@ Future<T> showPopUp<T>({
       context: context,
       builder: builder,
       barrierDismissible: barrierDismissible,
-      //barrierColor: barrierColor,
-      //useSafeArea: useSafeArea,
+      barrierColor: barrierColor,
+      useSafeArea: useSafeArea,
       useRootNavigator: useRootNavigator,
       routeSettings: routeSettings,
       child: child);
diff --git a/pubspec.lock b/pubspec.lock
index 9b56163ba..4bfc5f790 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -589,7 +589,7 @@ packages:
       name: mobx_codegen
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.1.0+1"
+    version: "1.1.0+2"
   node_interop:
     dependency: transitive
     description:
@@ -708,7 +708,7 @@ packages:
       name: plugin_platform_interface
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.0.2"
+    version: "1.0.3"
   pointycastle:
     dependency: transitive
     description:
@@ -1030,5 +1030,5 @@ packages:
     source: hosted
     version: "2.2.1"
 sdks:
-  dart: ">=2.7.0 <3.0.0"
+  dart: ">=2.7.2 <3.0.0"
   flutter: ">=1.12.13+hotfix.5 <2.0.0"