-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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 RuntimeException
s are caught there, logged, and error results are sent back to the Dart side.
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.
} | ||
}]; | ||
} | ||
return self; | ||
} | ||
|
||
- (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.
@@ -4,7 +4,7 @@ buildscript { | |||
} | |||
|
|||
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.