Skip to content
This repository has been archived by the owner on Feb 22, 2023. It is now read-only.

Add canLaunch method to url_launcher plugin #8

Merged
merged 12 commits into from
Apr 27, 2017

Conversation

szakarias
Copy link
Contributor

No description provided.

launchIntent.setData(Uri.parse(url));
activity.startActivity(launchIntent);
result.success(null);
} catch (java.lang.Exception exception) {
Copy link
Contributor

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.

Copy link
Contributor

@mravn-google mravn-google left a 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);
}
Copy link
Contributor

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);

Copy link
Contributor Author

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);
Copy link
Contributor

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.

Copy link
Contributor Author

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),
Copy link
Contributor

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.

Copy link
Contributor Author

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];
Copy link
Contributor

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];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Override
public void onMethodCall(MethodCall call, Result result) {
String url = call.arguments();
if (call.method.equals("UrlLauncher.canLaunch")) {
Copy link
Contributor

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'
Copy link
Member

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

@szakarias szakarias merged commit 66892d1 into flutter:master Apr 27, 2017
jonasbark pushed a commit to jonasbark/plugins that referenced this pull request May 2, 2018
Fix issue on ios preventing dart to see the start of the recording
srburton added a commit to srburton/plugins that referenced this pull request Feb 21, 2020
       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)
@srburton srburton mentioned this pull request Feb 21, 2020
13 tasks
sanekyy pushed a commit to optimist-dev/plugins that referenced this pull request Nov 1, 2020
@muhammednazil muhammednazil mentioned this pull request Dec 20, 2020
nt4f04uNd pushed a commit to nt4f04uNd/plugins that referenced this pull request Mar 23, 2021
…ocus-feature

Android rework test autofocus feature
PeterOmbodi added a commit to PeterOmbodi/plugins that referenced this pull request May 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants