-
Notifications
You must be signed in to change notification settings - Fork 9.7k
Add canLaunch method to url_launcher plugin #8
Conversation
| launchIntent.setData(Uri.parse(url)); | ||
| activity.startActivity(launchIntent); | ||
| result.success(null); | ||
| } catch (java.lang.Exception exception) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No need for the java.lang package name. It's implicit.
Does the code require you to catch Exception? The onMethodCall is called within a try-catch block by the framework, so any uncaught RuntimeExceptions are caught there, logged, and error results are sent back to the Dart side.
mravn-google
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
| result.success(false); | ||
| } else { | ||
| result.success(true); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: if (bExp) { xxx(true); } else { xxx(false); } should often be replaced by xxx(bExp);
Here, bExp is quite long and so it may be more readable to do
boolean answer = bExp;
xxx(answer);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Of course!
| private UrlLauncherPlugin(FlutterActivity activity) { | ||
| this.activity = activity; | ||
| new MethodChannel( | ||
| activity.getFlutterView(), "plugins.flutter.io/URLLauncher").setMethodCallHandler(this); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Decide on format for the channel name suffix: camelCase, multi_word, acronyms in lower or upper case, whatever. Just be consistent across plugins.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Choosing multi_word to be consistent with plugins in G3
| ), | ||
| ], | ||
| ), | ||
| new FutureBuilder(future: _launched, builder: _launchStatus), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should that be FutureBuilder<Null> to satisfy the analyzer? Perhaps not.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, but I'll add it anyway.
|
|
||
| - (NSDictionary*)launchURL:(NSString*)urlString { | ||
| - (BOOL)canLaunchURL:(NSString*)urlString { | ||
| NSURL* url = [NSURL URLWithString:urlString]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens, if the urlString is not a URL (syntax error)?
| } | ||
|
|
||
| - (void)launchURL:(NSString*)urlString result:(FlutterResult)result { | ||
| NSURL* url = [NSURL URLWithString:urlString]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similarly here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to https://developer.apple.com/reference/foundation/nsurl/1572047-urlwithstring url is nil.
| @Override | ||
| public void onMethodCall(MethodCall call, Result result) { | ||
| String url = call.arguments(); | ||
| if (call.method.equals("UrlLauncher.canLaunch")) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why prefix the method names with the name of the plugin? The channel name should be enough to separate canLaunch and launch from other uses.
|
|
||
| dependencies { | ||
| classpath 'com.android.tools.build:gradle:2.2.3' | ||
| classpath 'com.android.tools.build:gradle:2.3.1' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should keep this at the same version as our templates
Fix issue on ios preventing dart to see the start of the recording
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\build.gradle' line: 22
* What went wrong:
A problem occurred evaluating root project 'shared_preferences_macos'.
> Failed to apply plugin [id 'com.android.library']
> Minimum supported Gradle version is 5.4.1. Current version is 5.1.1. If using the gradle wrapper, try editing the distributionUrl in
C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\gradle\wrapper\gradle-wrapper.properties to gradle-5.4.1-all.zip
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
[ +1 ms] Running Gradle task 'assembleAarRelease'... (completed in 2,0s)
[ ]
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\build.gradle' line: 22
* What went wrong:
A problem occurred evaluating root project 'shared_preferences_macos'.
> Failed to apply plugin [id 'com.android.library']
> Minimum supported Gradle version is 5.4.1. Current version is 5.1.1. If using the gradle wrapper, try editing the distributionUrl in
C:\Users\srburton\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\shared_preferences_macos-0.0.1+6\android\gradle\wrapper\gradle-wrapper.properties to gradle-5.4.1-all.zip
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
[ +5 ms] "flutter apk" took 179.497ms.
The plugin shared_preferences_macos could not be built due to the issue above.
#0 throwToolExit (package:flutter_tools/src/base/common.dart:28:3)
flutter#1 buildPluginsAsAar (package:flutter_tools/src/android/gradle.dart:726:7)
flutter#2 _asyncErrorWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:80:45)
#3 _rootRunBinary (dart:async/zone.dart:1146:38)
flutter#4 _CustomZone.runBinary (dart:async/zone.dart:1039:19)
flutter#5 _FutureListener.handleError (dart:async/future_impl.dart:153:20)
flutter#6 Future._propagateToListeners.handleError (dart:async/future_impl.dart:692:47)
flutter#7 Future._propagateToListeners (dart:async/future_impl.dart:713:24)
flutter#8 Future._completeError (dart:async/future_impl.dart:532:5)
flutter#9 _AsyncAwaitCompleter.completeError (dart:async-patch/async_patch.dart:38:15)
flutter#10 buildGradleAar (package:flutter_tools/src/android/gradle.dart)
flutter#11 _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
flutter#12 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#13 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#14 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#15 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#16 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
#17 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#18 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:32:15)
flutter#19 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:290:13)
flutter#20 _DefaultProcessUtils.run (package:flutter_tools/src/base/process.dart)
flutter#21 _asyncThenWrapperHelper.<anonymous closure> (dart:async-patch/async_patch.dart:73:64)
flutter#22 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#23 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#24 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#25 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#26 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
flutter#27 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#28 Future.wait.<anonymous closure> (dart:async/future.dart:400:22)
flutter#29 _rootRunUnary (dart:async/zone.dart:1134:38)
flutter#30 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
flutter#31 _FutureListener.handleValue (dart:async/future_impl.dart:139:18)
flutter#32 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:680:45)
flutter#33 Future._propagateToListeners (dart:async/future_impl.dart:709:32)
flutter#34 Future._completeWithValue (dart:async/future_impl.dart:524:5)
flutter#35 Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:554:7)
flutter#36 _rootRun (dart:async/zone.dart:1126:13)
flutter#37 _CustomZone.run (dart:async/zone.dart:1023:19)
flutter#38 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
flutter#39 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
flutter#40 _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
flutter#41 _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
flutter#42 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
flutter#43 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:175:5)
Update master
…ocus-feature Android rework test autofocus feature
No description provided.