diff --git a/bin/internal/engine.version b/bin/internal/engine.version
index 1ba4fb6..52c3615 100644
--- a/bin/internal/engine.version
+++ b/bin/internal/engine.version
@@ -1 +1 @@
-6d86e67f04d8b8cf16c64b466a4e7a04c497f271
+267070c17a6956de1a03dbe09cda56f0c485f41b
diff --git a/dev/devicelab/bin/tasks/module_test_ios.dart b/dev/devicelab/bin/tasks/module_test_ios.dart
index e16a068..1d58782 100644
--- a/dev/devicelab/bin/tasks/module_test_ios.dart
+++ b/dev/devicelab/bin/tasks/module_test_ios.dart
@@ -191,6 +191,16 @@
       // Android-only, no embedded framework.
       checkDirectoryNotExists(path.join(ephemeralIOSHostApp.path, 'Frameworks', 'android_alarm_manager.framework'));
 
+      section('Clean and pub get module');
+
+      await inDirectory(projectDir, () async {
+        await flutter('clean');
+      });
+
+      await inDirectory(projectDir, () async {
+        await flutter('pub', options: <String>['get']);
+      });
+
       section('Add to existing iOS Objective-C app');
 
       final Directory objectiveCHostApp = Directory(path.join(tempDir.path, 'hello_host_app'));
@@ -241,6 +251,23 @@
         return TaskResult.failure('Failed to build existing Objective-C app .app');
       }
 
+      checkFileExists(path.join(
+        objectiveCBuildDirectory.path,
+        'Host.app',
+        'Frameworks',
+        'Flutter.framework',
+        'Flutter',
+      ));
+
+      checkFileExists(path.join(
+        objectiveCBuildDirectory.path,
+        'Host.app',
+        'Frameworks',
+        'App.framework',
+        'flutter_assets',
+        'isolate_snapshot_data',
+      ));
+
       final String objectiveCAnalyticsOutput = objectiveCAnalyticsOutputFile.readAsStringSync();
       if (!objectiveCAnalyticsOutput.contains('cd24: ios')
           || !objectiveCAnalyticsOutput.contains('cd25: true')
diff --git a/packages/flutter/lib/src/material/pickers/input_date_picker.dart b/packages/flutter/lib/src/material/pickers/input_date_picker.dart
index dda9714..2ef7544 100644
--- a/packages/flutter/lib/src/material/pickers/input_date_picker.dart
+++ b/packages/flutter/lib/src/material/pickers/input_date_picker.dart
@@ -16,12 +16,12 @@
 import 'date_picker_common.dart';
 import 'date_utils.dart' as utils;
 
-/// A [TextFormField] configured to accept and validate a date entered by the user.
+/// A [TextFormField] configured to accept and validate a date entered by a user.
 ///
-/// The text entered into this field will be constrained to only allow digits
-/// and separators. When saved or submitted, the text will be parsed into a
-/// [DateTime] according to the ambient locale. If the input text doesn't parse
-/// into a date, the [errorFormatText] message will be displayed under the field.
+/// When the field is saved or submitted, the text will be parsed into a
+/// [DateTime] according to the ambient locale's compact date format. If the
+/// input text doesn't parse into a date, the [errorFormatText] message will
+/// be displayed under the field.
 ///
 /// [firstDate], [lastDate], and [selectableDayPredicate] provide constraints on
 /// what days are valid. If the input date isn't in the date range or doesn't pass
@@ -231,9 +231,6 @@
         labelText: widget.fieldLabelText ?? localizations.dateInputLabel,
       ),
       validator: _validateDate,
-      inputFormatters: <TextInputFormatter>[
-        DateTextInputFormatter(localizations.dateSeparator),
-      ],
       keyboardType: TextInputType.datetime,
       onSaved: _handleSaved,
       onFieldSubmitted: _handleSubmitted,
@@ -242,39 +239,3 @@
     );
   }
 }
-
-/// A `TextInputFormatter` set up to format dates.
-//
-// This is not publicly exported (see pickers.dart), as it is
-// just meant for internal use by `InputDatePickerFormField` and
-// `InputDateRangePicker`.
-class DateTextInputFormatter extends TextInputFormatter {
-
-  /// Creates a date formatter with the given separator.
-  DateTextInputFormatter(
-    this.separator
-  ) : _filterFormatter = FilteringTextInputFormatter.allow(RegExp('[\\d$_commonSeparators\\$separator]+'));
-
-  /// List of common separators that are used in dates. This is used to make
-  /// sure that if given platform's [TextInputType.datetime] keyboard doesn't
-  /// provide the given locale's separator character, they can still enter the
-  /// separator using one of these characters (slash, period, comma, dash, or
-  /// space).
-  static const String _commonSeparators = r'\/\.,-\s';
-
-  /// The date separator for the current locale.
-  final String separator;
-
-  // Formatter that will filter out all characters except digits and date
-  // separators.
-  final TextInputFormatter _filterFormatter;
-
-  @override
-  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
-    final TextEditingValue filteredValue = _filterFormatter.formatEditUpdate(oldValue, newValue);
-    return filteredValue.copyWith(
-      // Replace any non-digits with the given separator
-      text: filteredValue.text.replaceAll(RegExp(r'[\D]'), separator),
-    );
-  }
-}
diff --git a/packages/flutter/lib/src/material/pickers/input_date_range_picker.dart b/packages/flutter/lib/src/material/pickers/input_date_range_picker.dart
index 6029733..fbe9b3b 100644
--- a/packages/flutter/lib/src/material/pickers/input_date_range_picker.dart
+++ b/packages/flutter/lib/src/material/pickers/input_date_range_picker.dart
@@ -14,7 +14,6 @@
 import '../theme.dart';
 
 import 'date_utils.dart' as utils;
-import 'input_date_picker.dart' show DateTextInputFormatter;
 
 /// Provides a pair of text fields that allow the user to enter the start and
 /// end dates that represent a range of dates.
@@ -124,7 +123,6 @@
   String _startErrorText;
   String _endErrorText;
   bool _autoSelected = false;
-  List<TextInputFormatter> _inputFormatters;
 
   @override
   void initState() {
@@ -146,9 +144,6 @@
   void didChangeDependencies() {
     super.didChangeDependencies();
     final MaterialLocalizations localizations = MaterialLocalizations.of(context);
-    _inputFormatters = <TextInputFormatter>[
-      DateTextInputFormatter(localizations.dateSeparator),
-    ];
     if (_startDate != null) {
       _startInputText = localizations.formatCompactDate(_startDate);
       final bool selectText = widget.autofocus && !_autoSelected;
@@ -247,7 +242,6 @@
               labelText: widget.fieldStartLabelText ?? localizations.dateRangeStartLabel,
               errorText: _startErrorText,
             ),
-            inputFormatters: _inputFormatters,
             keyboardType: TextInputType.datetime,
             onChanged: _handleStartChanged,
             autofocus: widget.autofocus,
@@ -264,7 +258,6 @@
               labelText: widget.fieldEndLabelText ?? localizations.dateRangeEndLabel,
               errorText: _endErrorText,
             ),
-            inputFormatters: _inputFormatters,
             keyboardType: TextInputType.datetime,
             onChanged: _handleEndChanged,
           ),
diff --git a/packages/flutter/test/material/date_picker_test.dart b/packages/flutter/test/material/date_picker_test.dart
index cd583e3..2241bc8 100644
--- a/packages/flutter/test/material/date_picker_test.dart
+++ b/packages/flutter/test/material/date_picker_test.dart
@@ -741,7 +741,8 @@
         field.controller.clear();
 
         await tester.pumpAndSettle();
-        await tester.enterText(find.byType(TextField), '20202014');
+        await tester.enterText(find.byType(TextField), '20 days, 3 months, 2003');
+        expect(find.text('20 days, 3 months, 2003'), findsOneWidget);
         expect(find.text(errorFormatText), findsNothing);
 
         await tester.tap(find.text('OK'));
diff --git a/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl
index 4d7715a..892a281 100644
--- a/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl
+++ b/packages/flutter_tools/templates/module/ios/library/Flutter.tmpl/podhelper.rb.tmpl
@@ -96,7 +96,8 @@
 #                                          Optional, defaults to two levels up from the directory of this script.
 #                                          MyApp/my_flutter/.ios/Flutter/../..
 def install_flutter_application_pod(flutter_application_path)
-  app_framework_dir = File.expand_path('App.framework', File.join('..', __FILE__))
+  current_directory_pathname = Pathname.new File.expand_path('..', __FILE__)
+  app_framework_dir = File.expand_path('App.framework', current_directory_pathname.to_path)
   app_framework_dylib = File.join(app_framework_dir, 'App')
   if !File.exist?(app_framework_dylib)
     # Fake an App.framework to have something to link against if the xcode backend script has not run yet.
@@ -108,7 +109,7 @@
 
   # Keep pod and script phase paths relative so they can be checked into source control.
   # Process will be run from project directory.
-  current_directory_pathname = Pathname.new File.expand_path('..', __FILE__)
+
   # defined_in_file is set by CocoaPods and is a Pathname to the Podfile.
   project_directory_pathname = defined_in_file.dirname
   relative = current_directory_pathname.relative_path_from project_directory_pathname
