Jaime Blasco

Fix analysis warnings

@@ -2,4 +2,6 @@ @@ -2,4 +2,6 @@
2 2
3 ## [0.1.0] - Package Release. 3 ## [0.1.0] - Package Release.
4 4
  5 +## [0.1.4] - Clean code and fix small bugs
  6 +
5 7
  1 +include: package:pedantic/analysis_options.yaml
  2 +
  3 +enable-experiment:
  4 + - extension-methods
  1 +
  2 +
  3 +enable-experiment:
  4 + - extension-methods
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
1 #include "Generated.xcconfig" 2 #include "Generated.xcconfig"
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
1 #include "Generated.xcconfig" 2 #include "Generated.xcconfig"
  1 +# Uncomment this line to define a global platform for your project
  2 +# platform :ios, '9.0'
  3 +
  4 +# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
  5 +ENV['COCOAPODS_DISABLE_STATS'] = 'true'
  6 +
  7 +project 'Runner', {
  8 + 'Debug' => :debug,
  9 + 'Profile' => :release,
  10 + 'Release' => :release,
  11 +}
  12 +
  13 +def parse_KV_file(file, separator='=')
  14 + file_abs_path = File.expand_path(file)
  15 + if !File.exists? file_abs_path
  16 + return [];
  17 + end
  18 + generated_key_values = {}
  19 + skip_line_start_symbols = ["#", "/"]
  20 + File.foreach(file_abs_path) do |line|
  21 + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
  22 + plugin = line.split(pattern=separator)
  23 + if plugin.length == 2
  24 + podname = plugin[0].strip()
  25 + path = plugin[1].strip()
  26 + podpath = File.expand_path("#{path}", file_abs_path)
  27 + generated_key_values[podname] = podpath
  28 + else
  29 + puts "Invalid plugin specification: #{line}"
  30 + end
  31 + end
  32 + generated_key_values
  33 +end
  34 +
  35 +target 'Runner' do
  36 + use_frameworks!
  37 + use_modular_headers!
  38 +
  39 + # Flutter Pod
  40 +
  41 + copied_flutter_dir = File.join(__dir__, 'Flutter')
  42 + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
  43 + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
  44 + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
  45 + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
  46 + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
  47 + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
  48 +
  49 + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
  50 + unless File.exist?(generated_xcode_build_settings_path)
  51 + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  52 + end
  53 + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
  54 + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
  55 +
  56 + unless File.exist?(copied_framework_path)
  57 + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
  58 + end
  59 + unless File.exist?(copied_podspec_path)
  60 + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
  61 + end
  62 + end
  63 +
  64 + # Keep pod path relative so it can be checked into Podfile.lock.
  65 + pod 'Flutter', :path => 'Flutter'
  66 +
  67 + # Plugin Pods
  68 +
  69 + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  70 + # referring to absolute paths on developers' machines.
  71 + system('rm -rf .symlinks')
  72 + system('mkdir -p .symlinks/plugins')
  73 + plugin_pods = parse_KV_file('../.flutter-plugins')
  74 + plugin_pods.each do |name, path|
  75 + symlink = File.join('.symlinks', 'plugins', name)
  76 + File.symlink(path, symlink)
  77 + pod name, :path => File.join(symlink, 'ios')
  78 + end
  79 +end
  80 +
  81 +post_install do |installer|
  82 + installer.pods_project.targets.each do |target|
  83 + target.build_configurations.each do |config|
  84 + config.build_settings['ENABLE_BITCODE'] = 'NO'
  85 + end
  86 + end
  87 +end
  1 +PODS:
  2 + - Flutter (1.0.0)
  3 + - url_launcher (0.0.1):
  4 + - Flutter
  5 + - url_launcher_macos (0.0.1):
  6 + - Flutter
  7 + - url_launcher_web (0.0.1):
  8 + - Flutter
  9 +
  10 +DEPENDENCIES:
  11 + - Flutter (from `Flutter`)
  12 + - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
  13 + - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
  14 + - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
  15 +
  16 +EXTERNAL SOURCES:
  17 + Flutter:
  18 + :path: Flutter
  19 + url_launcher:
  20 + :path: ".symlinks/plugins/url_launcher/ios"
  21 + url_launcher_macos:
  22 + :path: ".symlinks/plugins/url_launcher_macos/ios"
  23 + url_launcher_web:
  24 + :path: ".symlinks/plugins/url_launcher_web/ios"
  25 +
  26 +SPEC CHECKSUMS:
  27 + Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
  28 + url_launcher: a1c0cc845906122c4784c542523d8cacbded5626
  29 + url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
  30 + url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
  31 +
  32 +PODFILE CHECKSUM: c34e2287a9ccaa606aeceab922830efb9a6ff69a
  33 +
  34 +COCOAPODS: 1.8.4
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 10 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
  11 + 31E8A031F29A5C9DCEE5A35E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A551F173703771838A21386 /* Pods_Runner.framework */; };
11 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
13 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
@@ -29,9 +30,12 @@ @@ -29,9 +30,12 @@
29 /* End PBXCopyFilesBuildPhase section */ 30 /* End PBXCopyFilesBuildPhase section */
30 31
31 /* Begin PBXFileReference section */ 32 /* Begin PBXFileReference section */
  33 + 0A551F173703771838A21386 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
32 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 34 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
33 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 35 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
34 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 36 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
  37 + 453483ADEDE58E2FFD3A0F32 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
  38 + 5BE1C954520B0C4D1A5C47DF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
35 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 39 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
36 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 40 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
37 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 41 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -42,6 +46,7 @@ @@ -42,6 +46,7 @@
42 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 46 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
43 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 47 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
44 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 48 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  49 + ECE24C51B4309A57743A5800 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
45 /* End PBXFileReference section */ 50 /* End PBXFileReference section */
46 51
47 /* Begin PBXFrameworksBuildPhase section */ 52 /* Begin PBXFrameworksBuildPhase section */
@@ -49,12 +54,24 @@ @@ -49,12 +54,24 @@
49 isa = PBXFrameworksBuildPhase; 54 isa = PBXFrameworksBuildPhase;
50 buildActionMask = 2147483647; 55 buildActionMask = 2147483647;
51 files = ( 56 files = (
  57 + 31E8A031F29A5C9DCEE5A35E /* Pods_Runner.framework in Frameworks */,
52 ); 58 );
53 runOnlyForDeploymentPostprocessing = 0; 59 runOnlyForDeploymentPostprocessing = 0;
54 }; 60 };
55 /* End PBXFrameworksBuildPhase section */ 61 /* End PBXFrameworksBuildPhase section */
56 62
57 /* Begin PBXGroup section */ 63 /* Begin PBXGroup section */
  64 + 03BE858701E6013D75C55192 /* Pods */ = {
  65 + isa = PBXGroup;
  66 + children = (
  67 + ECE24C51B4309A57743A5800 /* Pods-Runner.debug.xcconfig */,
  68 + 453483ADEDE58E2FFD3A0F32 /* Pods-Runner.release.xcconfig */,
  69 + 5BE1C954520B0C4D1A5C47DF /* Pods-Runner.profile.xcconfig */,
  70 + );
  71 + name = Pods;
  72 + path = Pods;
  73 + sourceTree = "<group>";
  74 + };
58 9740EEB11CF90186004384FC /* Flutter */ = { 75 9740EEB11CF90186004384FC /* Flutter */ = {
59 isa = PBXGroup; 76 isa = PBXGroup;
60 children = ( 77 children = (
@@ -72,6 +89,8 @@ @@ -72,6 +89,8 @@
72 9740EEB11CF90186004384FC /* Flutter */, 89 9740EEB11CF90186004384FC /* Flutter */,
73 97C146F01CF9000F007C117D /* Runner */, 90 97C146F01CF9000F007C117D /* Runner */,
74 97C146EF1CF9000F007C117D /* Products */, 91 97C146EF1CF9000F007C117D /* Products */,
  92 + 03BE858701E6013D75C55192 /* Pods */,
  93 + BB84F3538ADB8070C8092550 /* Frameworks */,
75 ); 94 );
76 sourceTree = "<group>"; 95 sourceTree = "<group>";
77 }; 96 };
@@ -106,6 +125,14 @@ @@ -106,6 +125,14 @@
106 name = "Supporting Files"; 125 name = "Supporting Files";
107 sourceTree = "<group>"; 126 sourceTree = "<group>";
108 }; 127 };
  128 + BB84F3538ADB8070C8092550 /* Frameworks */ = {
  129 + isa = PBXGroup;
  130 + children = (
  131 + 0A551F173703771838A21386 /* Pods_Runner.framework */,
  132 + );
  133 + name = Frameworks;
  134 + sourceTree = "<group>";
  135 + };
109 /* End PBXGroup section */ 136 /* End PBXGroup section */
110 137
111 /* Begin PBXNativeTarget section */ 138 /* Begin PBXNativeTarget section */
@@ -113,12 +140,14 @@ @@ -113,12 +140,14 @@
113 isa = PBXNativeTarget; 140 isa = PBXNativeTarget;
114 buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 141 buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
115 buildPhases = ( 142 buildPhases = (
  143 + D0B7AC2EB31CC6A828ADA674 /* [CP] Check Pods Manifest.lock */,
116 9740EEB61CF901F6004384FC /* Run Script */, 144 9740EEB61CF901F6004384FC /* Run Script */,
117 97C146EA1CF9000F007C117D /* Sources */, 145 97C146EA1CF9000F007C117D /* Sources */,
118 97C146EB1CF9000F007C117D /* Frameworks */, 146 97C146EB1CF9000F007C117D /* Frameworks */,
119 97C146EC1CF9000F007C117D /* Resources */, 147 97C146EC1CF9000F007C117D /* Resources */,
120 9705A1C41CF9048500538489 /* Embed Frameworks */, 148 9705A1C41CF9048500538489 /* Embed Frameworks */,
121 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 149 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
  150 + F282B7FE454FE6B56BD6580F /* [CP] Embed Pods Frameworks */,
122 ); 151 );
123 buildRules = ( 152 buildRules = (
124 ); 153 );
@@ -205,6 +234,48 @@ @@ -205,6 +234,48 @@
205 shellPath = /bin/sh; 234 shellPath = /bin/sh;
206 shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 235 shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
207 }; 236 };
  237 + D0B7AC2EB31CC6A828ADA674 /* [CP] Check Pods Manifest.lock */ = {
  238 + isa = PBXShellScriptBuildPhase;
  239 + buildActionMask = 2147483647;
  240 + files = (
  241 + );
  242 + inputFileListPaths = (
  243 + );
  244 + inputPaths = (
  245 + "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
  246 + "${PODS_ROOT}/Manifest.lock",
  247 + );
  248 + name = "[CP] Check Pods Manifest.lock";
  249 + outputFileListPaths = (
  250 + );
  251 + outputPaths = (
  252 + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
  253 + );
  254 + runOnlyForDeploymentPostprocessing = 0;
  255 + shellPath = /bin/sh;
  256 + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
  257 + showEnvVarsInLog = 0;
  258 + };
  259 + F282B7FE454FE6B56BD6580F /* [CP] Embed Pods Frameworks */ = {
  260 + isa = PBXShellScriptBuildPhase;
  261 + buildActionMask = 2147483647;
  262 + files = (
  263 + );
  264 + inputPaths = (
  265 + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
  266 + "${PODS_ROOT}/../Flutter/Flutter.framework",
  267 + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
  268 + );
  269 + name = "[CP] Embed Pods Frameworks";
  270 + outputPaths = (
  271 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
  272 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
  273 + );
  274 + runOnlyForDeploymentPostprocessing = 0;
  275 + shellPath = /bin/sh;
  276 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
  277 + showEnvVarsInLog = 0;
  278 + };
208 /* End PBXShellScriptBuildPhase section */ 279 /* End PBXShellScriptBuildPhase section */
209 280
210 /* Begin PBXSourcesBuildPhase section */ 281 /* Begin PBXSourcesBuildPhase section */
@@ -4,4 +4,7 @@ @@ -4,4 +4,7 @@
4 <FileRef 4 <FileRef
5 location = "group:Runner.xcodeproj"> 5 location = "group:Runner.xcodeproj">
6 </FileRef> 6 </FileRef>
  7 + <FileRef
  8 + location = "group:Pods/Pods.xcodeproj">
  9 + </FileRef>
7 </Workspace> 10 </Workspace>
1 import 'dart:ui'; 1 import 'dart:ui';
2 2
3 import 'package:example/examples/sliver_container.dart'; 3 import 'package:example/examples/sliver_container.dart';
4 -import 'package:example/modals/modal_fit.dart';  
5 import 'package:flutter/cupertino.dart'; 4 import 'package:flutter/cupertino.dart';
6 -import 'package:flutter/gestures.dart';  
7 import 'package:flutter/material.dart'; 5 import 'package:flutter/material.dart';
8 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; 6 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
9 7
@@ -163,8 +161,7 @@ class PhotoShareBottomSheet extends StatelessWidget { @@ -163,8 +161,7 @@ class PhotoShareBottomSheet extends StatelessWidget {
163 width: 60, 161 width: 60,
164 decoration: BoxDecoration( 162 decoration: BoxDecoration(
165 image: DecorationImage( 163 image: DecorationImage(
166 - image:  
167 - AssetImage(app.imageUrl), 164 + image: AssetImage(app.imageUrl),
168 fit: BoxFit.cover), 165 fit: BoxFit.cover),
169 color: Colors.white, 166 color: Colors.white,
170 borderRadius: 167 borderRadius:
@@ -69,6 +69,7 @@ class _SliverGroupElement extends RenderObjectElement { @@ -69,6 +69,7 @@ class _SliverGroupElement extends RenderObjectElement {
69 if (child == _backgroundDecoration) _backgroundDecoration = null; 69 if (child == _backgroundDecoration) _backgroundDecoration = null;
70 if (child == _foregroundDecoration) _foregroundDecoration = null; 70 if (child == _foregroundDecoration) _foregroundDecoration = null;
71 if (child == _sliver) _sliver = null; 71 if (child == _sliver) _sliver = null;
  72 + super.forgetChild(child);
72 } 73 }
73 74
74 @override 75 @override
@@ -9,8 +9,6 @@ import 'modals/floating_modal.dart'; @@ -9,8 +9,6 @@ import 'modals/floating_modal.dart';
9 import 'modals/modal_complex_all.dart'; 9 import 'modals/modal_complex_all.dart';
10 import 'modals/modal_fit.dart'; 10 import 'modals/modal_fit.dart';
11 import 'modals/modal_inside_modal.dart'; 11 import 'modals/modal_inside_modal.dart';
12 -import 'modals/modal_inside_modal.dart';  
13 -import 'modals/modal_simple.dart';  
14 import 'modals/modal_will_scope.dart'; 12 import 'modals/modal_will_scope.dart';
15 import 'modals/modal_with_navigator.dart'; 13 import 'modals/modal_with_navigator.dart';
16 import 'modals/modal_with_scroll.dart'; 14 import 'modals/modal_with_scroll.dart';
@@ -25,7 +23,9 @@ class MyApp extends StatelessWidget { @@ -25,7 +23,9 @@ class MyApp extends StatelessWidget {
25 return MaterialApp( 23 return MaterialApp(
26 theme: ThemeData(platform: TargetPlatform.iOS), 24 theme: ThemeData(platform: TargetPlatform.iOS),
27 title: 'BottomSheet Modals', 25 title: 'BottomSheet Modals',
28 - builder: (context, child) => WebFrame(child: child,), 26 + builder: (context, child) => WebFrame(
  27 + child: child,
  28 + ),
29 onGenerateRoute: (RouteSettings settings) { 29 onGenerateRoute: (RouteSettings settings) {
30 switch (settings.name) { 30 switch (settings.name) {
31 case '/': 31 case '/':
@@ -184,6 +184,16 @@ class _MyHomePageState extends State<MyHomePage> { @@ -184,6 +184,16 @@ class _MyHomePageState extends State<MyHomePage> {
184 scrollController: scrollController), 184 scrollController: scrollController),
185 )), 185 )),
186 ListTile( 186 ListTile(
  187 + title: Text('Cupertino Modal with inside navigation'),
  188 + onTap: () => showCupertinoModalBottomSheet(
  189 + expand: true,
  190 + context: context,
  191 + backgroundColor: Colors.transparent,
  192 + builder: (context, scrollController) =>
  193 + ModalWithNavigator(
  194 + scrollController: scrollController),
  195 + )),
  196 + ListTile(
187 title: Text('Cupertino Navigator + Scroll + WillScope'), 197 title: Text('Cupertino Navigator + Scroll + WillScope'),
188 onTap: () => showCupertinoModalBottomSheet( 198 onTap: () => showCupertinoModalBottomSheet(
189 expand: true, 199 expand: true,
1 -import 'dart:math';  
2 -  
3 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
4 -import 'package:flutter/services.dart';  
5 import 'package:flutter/widgets.dart'; 2 import 'package:flutter/widgets.dart';
6 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; 3 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
7 4
@@ -2,8 +2,6 @@ import 'package:flutter/cupertino.dart'; @@ -2,8 +2,6 @@ import 'package:flutter/cupertino.dart';
2 import 'package:flutter/material.dart'; 2 import 'package:flutter/material.dart';
3 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; 3 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
4 4
5 -import 'modal_with_scroll.dart';  
6 -  
7 class ModalInsideModal extends StatelessWidget { 5 class ModalInsideModal extends StatelessWidget {
8 final ScrollController scrollController; 6 final ScrollController scrollController;
9 7
@@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart'; @@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart';
2 import 'package:flutter/foundation.dart'; 2 import 'package:flutter/foundation.dart';
3 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
4 import 'package:flutter/rendering.dart'; 4 import 'package:flutter/rendering.dart';
5 -import 'package:flutter/services.dart';  
6 import 'package:url_launcher/url_launcher.dart'; 5 import 'package:url_launcher/url_launcher.dart';
7 6
8 class WebFrame extends StatelessWidget { 7 class WebFrame extends StatelessWidget {
@@ -55,7 +54,8 @@ class WebFrame extends StatelessWidget { @@ -55,7 +54,8 @@ class WebFrame extends StatelessWidget {
55 MainAxisAlignment.spaceBetween, 54 MainAxisAlignment.spaceBetween,
56 children: <Widget>[ 55 children: <Widget>[
57 Padding( 56 Padding(
58 - padding: EdgeInsets.only(left: 30, top: 4), 57 + padding:
  58 + EdgeInsets.only(left: 30, top: 4),
59 child: Text( 59 child: Text(
60 '${date.hour}:${date.minute}', 60 '${date.hour}:${date.minute}',
61 style: TextStyle( 61 style: TextStyle(
@@ -113,37 +113,43 @@ class WebFrame extends StatelessWidget { @@ -113,37 +113,43 @@ class WebFrame extends StatelessWidget {
113 child: FittedBox( 113 child: FittedBox(
114 fit: BoxFit.scaleDown, 114 fit: BoxFit.scaleDown,
115 child: Container( 115 child: Container(
116 - padding: EdgeInsets.only(bottom: 40),  
117 - width: mediaQuery.size.width,  
118 - height: mediaQuery.size.height,  
119 - alignment: Alignment.center,  
120 - child: Column(  
121 - crossAxisAlignment: CrossAxisAlignment.stretch,  
122 - children: <Widget>[  
123 - Expanded(  
124 - child: Text(  
125 - 'Modal\nBottom\nSheet',  
126 - style: TextStyle(  
127 - fontWeight: FontWeight.w600,  
128 - fontSize: 80,  
129 - ),  
130 - maxLines: 3,  
131 - overflow: TextOverflow.clip,  
132 - )),  
133 - Spacer(),  
134 - Row(children: <Widget>[  
135 - InkWell(  
136 - onTap: () => launch('https://pub.dev/packages/modal_bottom_sheet'),  
137 - child: Image.asset('assets/flutter.png', height: 60),  
138 - ),  
139 - Spacer(),  
140 - InkWell(  
141 - onTap: () => launch('https://github.com/jamesblasco/modal_bottom_sheet'),  
142 - child: Image.asset('assets/github.png', height: 60),  
143 - ),  
144 - ],)  
145 - ],  
146 - )))) 116 + padding: EdgeInsets.only(bottom: 40),
  117 + width: mediaQuery.size.width,
  118 + height: mediaQuery.size.height,
  119 + alignment: Alignment.center,
  120 + child: Column(
  121 + crossAxisAlignment: CrossAxisAlignment.stretch,
  122 + children: <Widget>[
  123 + Expanded(
  124 + child: Text(
  125 + 'Modal\nBottom\nSheet',
  126 + style: TextStyle(
  127 + fontWeight: FontWeight.w600,
  128 + fontSize: 80,
  129 + ),
  130 + maxLines: 3,
  131 + overflow: TextOverflow.clip,
  132 + )),
  133 + Spacer(),
  134 + Row(
  135 + children: <Widget>[
  136 + InkWell(
  137 + onTap: () => launch(
  138 + 'https://pub.dev/packages/modal_bottom_sheet'),
  139 + child: Image.asset('assets/flutter.png',
  140 + height: 60),
  141 + ),
  142 + Spacer(),
  143 + InkWell(
  144 + onTap: () => launch(
  145 + 'https://github.com/jamesblasco/modal_bottom_sheet'),
  146 + child: Image.asset('assets/github.png',
  147 + height: 60),
  148 + ),
  149 + ],
  150 + )
  151 + ],
  152 + ))))
147 ], 153 ],
148 ), 154 ),
149 ), 155 ),
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
1 #include "ephemeral/Flutter-Generated.xcconfig" 2 #include "ephemeral/Flutter-Generated.xcconfig"
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
1 #include "ephemeral/Flutter-Generated.xcconfig" 2 #include "ephemeral/Flutter-Generated.xcconfig"
@@ -5,6 +5,8 @@ @@ -5,6 +5,8 @@
5 import FlutterMacOS 5 import FlutterMacOS
6 import Foundation 6 import Foundation
7 7
  8 +import url_launcher_macos
8 9
9 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { 10 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
  11 + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
10 } 12 }
  1 +platform :osx, '10.11'
  2 +
  3 +# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
  4 +ENV['COCOAPODS_DISABLE_STATS'] = 'true'
  5 +
  6 +project 'Runner', {
  7 + 'Debug' => :debug,
  8 + 'Profile' => :release,
  9 + 'Release' => :release,
  10 +}
  11 +
  12 +def parse_KV_file(file, separator='=')
  13 + file_abs_path = File.expand_path(file)
  14 + if !File.exists? file_abs_path
  15 + return [];
  16 + end
  17 + pods_ary = []
  18 + skip_line_start_symbols = ["#", "/"]
  19 + File.foreach(file_abs_path) { |line|
  20 + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
  21 + plugin = line.split(pattern=separator)
  22 + if plugin.length == 2
  23 + podname = plugin[0].strip()
  24 + path = plugin[1].strip()
  25 + podpath = File.expand_path("#{path}", file_abs_path)
  26 + pods_ary.push({:name => podname, :path => podpath});
  27 + else
  28 + puts "Invalid plugin specification: #{line}"
  29 + end
  30 + }
  31 + return pods_ary
  32 +end
  33 +
  34 +def pubspec_supports_macos(file)
  35 + file_abs_path = File.expand_path(file)
  36 + if !File.exists? file_abs_path
  37 + return false;
  38 + end
  39 + File.foreach(file_abs_path) { |line|
  40 + return true if line =~ /^\s*macos:/
  41 + }
  42 + return false
  43 +end
  44 +
  45 +target 'Runner' do
  46 + use_frameworks!
  47 + use_modular_headers!
  48 +
  49 + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
  50 + # referring to absolute paths on developers' machines.
  51 + ephemeral_dir = File.join('Flutter', 'ephemeral')
  52 + symlink_dir = File.join(ephemeral_dir, '.symlinks')
  53 + symlink_plugins_dir = File.join(symlink_dir, 'plugins')
  54 + system("rm -rf #{symlink_dir}")
  55 + system("mkdir -p #{symlink_plugins_dir}")
  56 +
  57 + # Flutter Pods
  58 + generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig'))
  59 + if generated_xcconfig.empty?
  60 + puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
  61 + end
  62 + generated_xcconfig.map { |p|
  63 + if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
  64 + symlink = File.join(symlink_dir, 'flutter')
  65 + File.symlink(File.dirname(p[:path]), symlink)
  66 + pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path]))
  67 + end
  68 + }
  69 +
  70 + # Plugin Pods
  71 + plugin_pods = parse_KV_file('../.flutter-plugins')
  72 + plugin_pods.map { |p|
  73 + symlink = File.join(symlink_plugins_dir, p[:name])
  74 + File.symlink(p[:path], symlink)
  75 + if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml'))
  76 + pod p[:name], :path => File.join(symlink, 'macos')
  77 + end
  78 + }
  79 +end
  80 +
  81 +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
  82 +install! 'cocoapods', :disable_input_output_paths => true
@@ -14,7 +14,7 @@ description: A new Flutter project. @@ -14,7 +14,7 @@ description: A new Flutter project.
14 version: 1.0.0+1 14 version: 1.0.0+1
15 15
16 environment: 16 environment:
17 - sdk: ">=2.1.0 <3.0.0" 17 + sdk: ">=2.7.0 <3.0.0"
18 18
19 dependencies: 19 dependencies:
20 flutter: 20 flutter:
@@ -124,8 +124,7 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -124,8 +124,7 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
124 AnimationController _bounceDragController; 124 AnimationController _bounceDragController;
125 125
126 double get _childHeight { 126 double get _childHeight {
127 - final RenderBox renderBox =  
128 - _childKey.currentContext.findRenderObject() as RenderBox; 127 + final renderBox = _childKey.currentContext.findRenderObject() as RenderBox;
129 return renderBox.size.height; 128 return renderBox.size.height;
130 } 129 }
131 130
@@ -152,8 +151,9 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -152,8 +151,9 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
152 widget.animationController.forward().then((value) { 151 widget.animationController.forward().then((value) {
153 // When using WillPop, animation doesn't end at 1. 152 // When using WillPop, animation doesn't end at 1.
154 // Check more in detail the problem 153 // Check more in detail the problem
155 - if (!widget.animationController.isCompleted) 154 + if (!widget.animationController.isCompleted) {
156 widget.animationController.value = 1; 155 widget.animationController.value = 1;
  156 + }
157 }); 157 });
158 _bounceDragController.reverse(); 158 _bounceDragController.reverse();
159 } 159 }
@@ -208,7 +208,7 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -208,7 +208,7 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
208 isDragging = false; 208 isDragging = false;
209 _bounceDragController.reverse(); 209 _bounceDragController.reverse();
210 210
211 - bool canClose = true; 211 + var canClose = true;
212 if (widget.shouldClose != null && hasReachedWillPopThreshold) { 212 if (widget.shouldClose != null && hasReachedWillPopThreshold) {
213 _cancelClose(); 213 _cancelClose();
214 canClose = await shouldClose(); 214 canClose = await shouldClose();
@@ -219,8 +219,9 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -219,8 +219,9 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
219 _close(); 219 _close();
220 print('close2'); 220 print('close2');
221 } else if (hasReachedCloseThreshold) { 221 } else if (hasReachedCloseThreshold) {
222 - if (widget.animationController.value > 0.0) 222 + if (widget.animationController.value > 0.0) {
223 widget.animationController.fling(velocity: -1.0); 223 widget.animationController.fling(velocity: -1.0);
  224 + }
224 _close(); 225 _close();
225 print('close3'); 226 print('close3');
226 } else { 227 } else {
@@ -231,11 +232,11 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -231,11 +232,11 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
231 } 232 }
232 } 233 }
233 234
234 - _handleScrollUpdate(ScrollNotification notification) { 235 + void _handleScrollUpdate(ScrollNotification notification) {
235 if (notification.metrics.pixels <= notification.metrics.minScrollExtent) { 236 if (notification.metrics.pixels <= notification.metrics.minScrollExtent) {
236 //Check if listener is same from scrollController 237 //Check if listener is same from scrollController
237 if (_scrollController.position.pixels != notification.metrics.pixels) { 238 if (_scrollController.position.pixels != notification.metrics.pixels) {
238 - return false; 239 + return;
239 } 240 }
240 DragUpdateDetails dragDetails; 241 DragUpdateDetails dragDetails;
241 if (notification is ScrollUpdateNotification) { 242 if (notification is ScrollUpdateNotification) {
@@ -270,14 +271,15 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -270,14 +271,15 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
270 curve: Curves.easeOutSine, 271 curve: Curves.easeOutSine,
271 ); 272 );
272 273
273 - Widget child = widget.builder(context, _scrollController); 274 + var child = widget.builder(context, _scrollController);
274 275
275 - if (widget.containerBuilder != null) 276 + if (widget.containerBuilder != null) {
276 child = widget.containerBuilder( 277 child = widget.containerBuilder(
277 context, 278 context,
278 widget.animationController, 279 widget.animationController,
279 child, 280 child,
280 ); 281 );
  282 + }
281 283
282 // Todo: Add curved Animation when push and pop without gesture 284 // Todo: Add curved Animation when push and pop without gesture
283 /* final Animation<double> containerAnimation = CurvedAnimation( 285 /* final Animation<double> containerAnimation = CurvedAnimation(
@@ -366,15 +368,14 @@ class _CustomBottomSheetLayout extends SingleChildLayoutDelegate { @@ -366,15 +368,14 @@ class _CustomBottomSheetLayout extends SingleChildLayoutDelegate {
366 368
367 @override 369 @override
368 Offset getPositionForChild(Size size, Size childSize) { 370 Offset getPositionForChild(Size size, Size childSize) {
369 - if (this.childHeight == null) this.childHeight = childSize.height;  
370 - 371 + childHeight ??= childSize.height;
371 return Offset(0.0, size.height - childSize.height); 372 return Offset(0.0, size.height - childSize.height);
372 } 373 }
373 374
374 @override 375 @override
375 bool shouldRelayout(_CustomBottomSheetLayout oldDelegate) { 376 bool shouldRelayout(_CustomBottomSheetLayout oldDelegate) {
376 if (progress != oldDelegate.progress) { 377 if (progress != oldDelegate.progress) {
377 - this.childHeight = oldDelegate.childHeight; 378 + childHeight = oldDelegate.childHeight;
378 return true; 379 return true;
379 } 380 }
380 return false; 381 return false;
@@ -57,7 +57,7 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> { @@ -57,7 +57,7 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
57 super.dispose(); 57 super.dispose();
58 } 58 }
59 59
60 - updateController() { 60 + void updateController() {
61 widget.secondAnimationController?.value = widget.route.animation.value; 61 widget.secondAnimationController?.value = widget.route.animation.value;
62 } 62 }
63 63
@@ -65,9 +65,8 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> { @@ -65,9 +65,8 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
65 Widget build(BuildContext context) { 65 Widget build(BuildContext context) {
66 assert(debugCheckHasMediaQuery(context)); 66 assert(debugCheckHasMediaQuery(context));
67 assert(debugCheckHasMaterialLocalizations(context)); 67 assert(debugCheckHasMaterialLocalizations(context));
68 - final MaterialLocalizations localizations =  
69 - MaterialLocalizations.of(context);  
70 - final String routeLabel = _getRouteLabel(localizations); 68 + final localizations = MaterialLocalizations.of(context);
  69 + final routeLabel = _getRouteLabel(localizations);
71 70
72 return AnimatedBuilder( 71 return AnimatedBuilder(
73 animation: widget.route._animationController, 72 animation: widget.route._animationController,
@@ -176,7 +176,7 @@ class _CupertinoModalTransition extends StatelessWidget { @@ -176,7 +176,7 @@ class _CupertinoModalTransition extends StatelessWidget {
176 176
177 @override 177 @override
178 Widget build(BuildContext context) { 178 Widget build(BuildContext context) {
179 - double startRoundCorner = 0; 179 + var startRoundCorner = 0.0;
180 final paddingTop = MediaQuery.of(context).padding.top; 180 final paddingTop = MediaQuery.of(context).padding.top;
181 if (Theme.of(context).platform == TargetPlatform.iOS && paddingTop > 20) { 181 if (Theme.of(context).platform == TargetPlatform.iOS && paddingTop > 20) {
182 startRoundCorner = 38.5; 182 startRoundCorner = 38.5;
@@ -194,8 +194,6 @@ class _CupertinoModalTransition extends StatelessWidget { @@ -194,8 +194,6 @@ class _CupertinoModalTransition extends StatelessWidget {
194 animation: curvedAnimation, 194 animation: curvedAnimation,
195 child: body, 195 child: body,
196 builder: (context, child) { 196 builder: (context, child) {
197 - Widget result = child;  
198 -  
199 final progress = curvedAnimation.value; 197 final progress = curvedAnimation.value;
200 final yOffset = progress * paddingTop; 198 final yOffset = progress * paddingTop;
201 final scale = 1 - progress / 10; 199 final scale = 1 - progress / 10;
@@ -212,7 +210,7 @@ class _CupertinoModalTransition extends StatelessWidget { @@ -212,7 +210,7 @@ class _CupertinoModalTransition extends StatelessWidget {
212 alignment: Alignment.topCenter, 210 alignment: Alignment.topCenter,
213 child: ClipRRect( 211 child: ClipRRect(
214 borderRadius: BorderRadius.circular(radius), 212 borderRadius: BorderRadius.circular(radius),
215 - child: result), 213 + child: child),
216 ), 214 ),
217 ) 215 )
218 ], 216 ],
@@ -225,6 +223,7 @@ class _CupertinoModalTransition extends StatelessWidget { @@ -225,6 +223,7 @@ class _CupertinoModalTransition extends StatelessWidget {
225 class _CupertinoScaffold extends InheritedWidget { 223 class _CupertinoScaffold extends InheritedWidget {
226 final AnimationController animation; 224 final AnimationController animation;
227 225
  226 + @override
228 final Widget child; 227 final Widget child;
229 228
230 const _CupertinoScaffold({Key key, this.animation, this.child}) 229 const _CupertinoScaffold({Key key, this.animation, this.child})
@@ -55,14 +55,13 @@ WidgetWithChildBuilder _materialContainerBuilder(BuildContext context, @@ -55,14 +55,13 @@ WidgetWithChildBuilder _materialContainerBuilder(BuildContext context,
55 ThemeData theme, 55 ThemeData theme,
56 Clip clipBehavior, 56 Clip clipBehavior,
57 ShapeBorder shape}) { 57 ShapeBorder shape}) {
58 - final BottomSheetThemeData bottomSheetTheme =  
59 - Theme.of(context).bottomSheetTheme;  
60 - final Color color = backgroundColor ?? 58 + final bottomSheetTheme = Theme.of(context).bottomSheetTheme;
  59 + final color = backgroundColor ??
61 bottomSheetTheme?.modalBackgroundColor ?? 60 bottomSheetTheme?.modalBackgroundColor ??
62 bottomSheetTheme?.backgroundColor; 61 bottomSheetTheme?.backgroundColor;
63 - final double _elevation = elevation ?? bottomSheetTheme.elevation ?? 0;  
64 - final ShapeBorder _shape = shape ?? bottomSheetTheme.shape;  
65 - final Clip _clipBehavior = 62 + final _elevation = elevation ?? bottomSheetTheme.elevation ?? 0.0;
  63 + final _shape = shape ?? bottomSheetTheme.shape;
  64 + final _clipBehavior =
66 clipBehavior ?? bottomSheetTheme.clipBehavior ?? Clip.none; 65 clipBehavior ?? bottomSheetTheme.clipBehavior ?? Clip.none;
67 66
68 final result = (context, animation, child) => Material( 67 final result = (context, animation, child) => Material(
@@ -40,7 +40,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> { @@ -40,7 +40,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> {
40 @override 40 @override
41 void didChangeNext(Route nextRoute) { 41 void didChangeNext(Route nextRoute) {
42 if (nextRoute is ModalBottomSheetRoute) { 42 if (nextRoute is ModalBottomSheetRoute) {
43 - this._nextModalRoute = nextRoute; 43 + _nextModalRoute = nextRoute;
44 } 44 }
45 45
46 super.didChangeNext(nextRoute); 46 super.didChangeNext(nextRoute);
@@ -60,7 +60,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> { @@ -60,7 +60,7 @@ class MaterialWithModalsPageRoute<T> extends MaterialPageRoute<T> {
60 @override 60 @override
61 Widget buildTransitions(BuildContext context, Animation<double> animation, 61 Widget buildTransitions(BuildContext context, Animation<double> animation,
62 Animation<double> secondaryAnimation, Widget child) { 62 Animation<double> secondaryAnimation, Widget child) {
63 - final PageTransitionsTheme theme = Theme.of(context).pageTransitionsTheme; 63 + final theme = Theme.of(context).pageTransitionsTheme;
64 if (_nextModalRoute != null) { 64 if (_nextModalRoute != null) {
65 if (!secondaryAnimation.isDismissed) { 65 if (!secondaryAnimation.isDismissed) {
66 // Avoid default transition theme to animate when a new modal view is pushed 66 // Avoid default transition theme to animate when a new modal view is pushed
@@ -7,42 +7,42 @@ packages: @@ -7,42 +7,42 @@ packages:
7 name: archive 7 name: archive
8 url: "https://pub.dartlang.org" 8 url: "https://pub.dartlang.org"
9 source: hosted 9 source: hosted
10 - version: "2.0.11" 10 + version: "2.0.13"
11 args: 11 args:
12 dependency: transitive 12 dependency: transitive
13 description: 13 description:
14 name: args 14 name: args
15 url: "https://pub.dartlang.org" 15 url: "https://pub.dartlang.org"
16 source: hosted 16 source: hosted
17 - version: "1.5.2" 17 + version: "1.6.0"
18 async: 18 async:
19 dependency: transitive 19 dependency: transitive
20 description: 20 description:
21 name: async 21 name: async
22 url: "https://pub.dartlang.org" 22 url: "https://pub.dartlang.org"
23 source: hosted 23 source: hosted
24 - version: "2.4.0" 24 + version: "2.4.1"
25 boolean_selector: 25 boolean_selector:
26 dependency: transitive 26 dependency: transitive
27 description: 27 description:
28 name: boolean_selector 28 name: boolean_selector
29 url: "https://pub.dartlang.org" 29 url: "https://pub.dartlang.org"
30 source: hosted 30 source: hosted
31 - version: "1.0.5" 31 + version: "2.0.0"
32 charcode: 32 charcode:
33 dependency: transitive 33 dependency: transitive
34 description: 34 description:
35 name: charcode 35 name: charcode
36 url: "https://pub.dartlang.org" 36 url: "https://pub.dartlang.org"
37 source: hosted 37 source: hosted
38 - version: "1.1.2" 38 + version: "1.1.3"
39 collection: 39 collection:
40 dependency: transitive 40 dependency: transitive
41 description: 41 description:
42 name: collection 42 name: collection
43 url: "https://pub.dartlang.org" 43 url: "https://pub.dartlang.org"
44 source: hosted 44 source: hosted
45 - version: "1.14.11" 45 + version: "1.14.12"
46 convert: 46 convert:
47 dependency: transitive 47 dependency: transitive
48 description: 48 description:
@@ -56,7 +56,7 @@ packages: @@ -56,7 +56,7 @@ packages:
56 name: crypto 56 name: crypto
57 url: "https://pub.dartlang.org" 57 url: "https://pub.dartlang.org"
58 source: hosted 58 source: hosted
59 - version: "2.1.3" 59 + version: "2.1.4"
60 flutter: 60 flutter:
61 dependency: "direct main" 61 dependency: "direct main"
62 description: flutter 62 description: flutter
@@ -73,7 +73,7 @@ packages: @@ -73,7 +73,7 @@ packages:
73 name: image 73 name: image
74 url: "https://pub.dartlang.org" 74 url: "https://pub.dartlang.org"
75 source: hosted 75 source: hosted
76 - version: "2.1.4" 76 + version: "2.1.12"
77 matcher: 77 matcher:
78 dependency: transitive 78 dependency: transitive
79 description: 79 description:
@@ -96,26 +96,26 @@ packages: @@ -96,26 +96,26 @@ packages:
96 source: hosted 96 source: hosted
97 version: "1.6.4" 97 version: "1.6.4"
98 pedantic: 98 pedantic:
99 - dependency: transitive 99 + dependency: "direct dev"
100 description: 100 description:
101 name: pedantic 101 name: pedantic
102 url: "https://pub.dartlang.org" 102 url: "https://pub.dartlang.org"
103 source: hosted 103 source: hosted
104 - version: "1.8.0+1" 104 + version: "1.9.0"
105 petitparser: 105 petitparser:
106 dependency: transitive 106 dependency: transitive
107 description: 107 description:
108 name: petitparser 108 name: petitparser
109 url: "https://pub.dartlang.org" 109 url: "https://pub.dartlang.org"
110 source: hosted 110 source: hosted
111 - version: "2.4.0" 111 + version: "3.0.2"
112 quiver: 112 quiver:
113 dependency: transitive 113 dependency: transitive
114 description: 114 description:
115 name: quiver 115 name: quiver
116 url: "https://pub.dartlang.org" 116 url: "https://pub.dartlang.org"
117 source: hosted 117 source: hosted
118 - version: "2.0.5" 118 + version: "2.1.3"
119 sky_engine: 119 sky_engine:
120 dependency: transitive 120 dependency: transitive
121 description: flutter 121 description: flutter
@@ -127,7 +127,7 @@ packages: @@ -127,7 +127,7 @@ packages:
127 name: source_span 127 name: source_span
128 url: "https://pub.dartlang.org" 128 url: "https://pub.dartlang.org"
129 source: hosted 129 source: hosted
130 - version: "1.5.5" 130 + version: "1.7.0"
131 stack_trace: 131 stack_trace:
132 dependency: transitive 132 dependency: transitive
133 description: 133 description:
@@ -162,7 +162,7 @@ packages: @@ -162,7 +162,7 @@ packages:
162 name: test_api 162 name: test_api
163 url: "https://pub.dartlang.org" 163 url: "https://pub.dartlang.org"
164 source: hosted 164 source: hosted
165 - version: "0.2.11" 165 + version: "0.2.15"
166 typed_data: 166 typed_data:
167 dependency: transitive 167 dependency: transitive
168 description: 168 description:
@@ -183,6 +183,7 @@ packages: @@ -183,6 +183,7 @@ packages:
183 name: xml 183 name: xml
184 url: "https://pub.dartlang.org" 184 url: "https://pub.dartlang.org"
185 source: hosted 185 source: hosted
186 - version: "3.5.0" 186 + version: "3.7.0"
187 sdks: 187 sdks:
188 - dart: ">=2.4.0 <3.0.0" 188 + dart: ">=2.7.0 <3.0.0"
  189 + flutter: ">=1.12.0 <2.0.0"
1 name: modal_bottom_sheet 1 name: modal_bottom_sheet
2 -description: 'Create flutter advanced modal bottom sheets. Material, Cupertino or your own style'  
3 -version: 0.1.3 2 +description: 'Create awesome and powerful modal bottom sheets. Material, Cupertino or create your own'
  3 +version: 0.1.4
4 homepage: 'https://github.com/jamesblasco/modal_bottom_sheet' 4 homepage: 'https://github.com/jamesblasco/modal_bottom_sheet'
5 5
6 environment: 6 environment:
@@ -14,6 +14,7 @@ dependencies: @@ -14,6 +14,7 @@ dependencies:
14 dev_dependencies: 14 dev_dependencies:
15 flutter_test: 15 flutter_test:
16 sdk: flutter 16 sdk: flutter
  17 + pedantic: ^1.9.0
17 18
18 # For information on the generic Dart part of this file, see the 19 # For information on the generic Dart part of this file, see the
19 # following page: https://dart.dev/tools/pub/pubspec 20 # following page: https://dart.dev/tools/pub/pubspec