From 2857f74f003198eb7ac051f759fe3fc9e170f6d4 Mon Sep 17 00:00:00 2001 From: Fries_I23 Date: Thu, 1 Jun 2023 22:57:52 +0800 Subject: [PATCH 1/3] Feat: Exposed launch url process, see #6 --- lib/donationButtons/buyMeACoffeeButton.dart | 12 +++++++++--- lib/donationButtons/ko-fiButton.dart | 13 ++++++++++--- lib/donationButtons/patreonButton.dart | 11 +++++++++-- lib/donationButtons/paypalButton.dart | 13 ++++++++++--- 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/lib/donationButtons/buyMeACoffeeButton.dart b/lib/donationButtons/buyMeACoffeeButton.dart index 9db7f7c..0dd540e 100644 --- a/lib/donationButtons/buyMeACoffeeButton.dart +++ b/lib/donationButtons/buyMeACoffeeButton.dart @@ -17,6 +17,9 @@ class BuyMeACoffeeButton extends StatelessWidget { ///function to call after opening the url final VoidCallback? onDonation; + ///function to call when launch url + final Future Function(String urlString)? onLaunchURL; + ///Optional custom styling final ButtonStyle? style; @@ -26,7 +29,8 @@ class BuyMeACoffeeButton extends StatelessWidget { this.color = BuyMeACoffeeColor.Yellow, required this.buyMeACoffeeName, this.onDonation, - this.style}) + this.style, + this.onLaunchURL}) : super(key: key); final String baseUrl = "https://www.buymeacoffee.com/"; @override @@ -40,9 +44,11 @@ class BuyMeACoffeeButton extends StatelessWidget { }; return ElevatedButton( - onPressed: () { + onPressed: () async { try { - launchUrlString(baseUrl + buyMeACoffeeName); + await (onLaunchURL != null + ? onLaunchURL!(baseUrl + buyMeACoffeeName) + : launchUrlString(baseUrl + buyMeACoffeeName)); } catch (e) { print("Error: $e"); } diff --git a/lib/donationButtons/ko-fiButton.dart b/lib/donationButtons/ko-fiButton.dart index 4a03f99..4725ae2 100644 --- a/lib/donationButtons/ko-fiButton.dart +++ b/lib/donationButtons/ko-fiButton.dart @@ -22,13 +22,18 @@ class KofiButton extends StatelessWidget { ///Optional custom styling final ButtonStyle? style; + + ///function to call when launch url + final Future Function(String urlString)? onLaunchURL; + const KofiButton( {Key? key, this.text = "Support me on Ko-fi", required this.kofiName, this.kofiColor = KofiColor.Blue, this.onDonation, - this.style}) + this.style, + this.onLaunchURL}) : super(key: key); ///Base Url: https://ko-fi.com/ <- your account name will be appended to its @@ -44,9 +49,11 @@ class KofiButton extends StatelessWidget { "KofiColor.Black": Color(0xff434B57) }; return ElevatedButton.icon( - onPressed: () { + onPressed: () async { try { - launchUrlString(baseUrl + kofiName); + await (onLaunchURL != null + ? onLaunchURL!(baseUrl + kofiName) + : launchUrlString(baseUrl + kofiName)); } catch (e) { print("Error: $e"); } diff --git a/lib/donationButtons/patreonButton.dart b/lib/donationButtons/patreonButton.dart index 58ea182..951c788 100644 --- a/lib/donationButtons/patreonButton.dart +++ b/lib/donationButtons/patreonButton.dart @@ -17,12 +17,17 @@ class PatreonButton extends StatelessWidget { ///Optional custom styling, allows full customization incl. Color final ButtonStyle? style; + + ///function to call when launch url + final Future Function(String urlString)? onLaunchURL; + const PatreonButton( {Key? key, this.text = "Support me on Patreon", required this.patreonName, this.onDonation, - this.style}) + this.style, + this.onLaunchURL}) : super(key: key); ///Patreon base url @@ -33,7 +38,9 @@ class PatreonButton extends StatelessWidget { return ElevatedButton.icon( onPressed: () async { try { - await launchUrlString(baseUrl + this.patreonName); + await (onLaunchURL != null + ? onLaunchURL!(baseUrl + patreonName) + : launchUrlString(baseUrl + patreonName)); } catch (e) { print("Error: $e"); } diff --git a/lib/donationButtons/paypalButton.dart b/lib/donationButtons/paypalButton.dart index ab44cda..a089587 100644 --- a/lib/donationButtons/paypalButton.dart +++ b/lib/donationButtons/paypalButton.dart @@ -18,13 +18,18 @@ class PayPalButton extends StatelessWidget { ///Optional custom styling final ButtonStyle? style; + + ///function to call when launch url + final Future Function(String urlString)? onLaunchURL; + const PayPalButton( {Key? key, this.donationText = "Donate with Paypal", required this.paypalButtonId, this.color, this.onDonation, - this.style}) + this.style, + this.onLaunchURL}) : super(key: key); ///Paypal base url for donations @@ -43,9 +48,11 @@ class PayPalButton extends StatelessWidget { backgroundColor: MaterialStateProperty.all(color ?? Colors.blue[600])) .merge(style), - onPressed: () { + onPressed: () async { try { - launchUrlString(baseUrl + paypalButtonId); + await (onLaunchURL != null + ? onLaunchURL!(baseUrl + paypalButtonId) + : launchUrlString(baseUrl + paypalButtonId)); } catch (e) { print("Error: $e"); } From b4d5e651c604918b36116caaa414e159af313ebb Mon Sep 17 00:00:00 2001 From: Flajt Date: Thu, 1 Jun 2023 19:36:54 +0200 Subject: [PATCH 2/3] Chore: Increment version number & update changelock + add pubspec.lock to .gitignore --- .gitignore | 1 + CHANGELOG.md | 6 ++- example/pubspec.lock | 121 +++++++++++++++++++++++++++---------------- pubspec.yaml | 2 +- 4 files changed, 83 insertions(+), 47 deletions(-) diff --git a/.gitignore b/.gitignore index a247422..1ffed35 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ .pub-cache/ .pub/ build/ +pubspec.lock # Android related **/android/**/gradle-wrapper.jar diff --git a/CHANGELOG.md b/CHANGELOG.md index bbad563..51efacc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,4 +31,8 @@ Fixed some small staff in the documentation, tried to format the data better ## 0.1.6 - Attempt to use semantic versioning correctly - Allow custom styling while keeping button colors with new `style`. Thanks to [@collodi](https://github.com/collodi) for opening the issue. -- Update example to reflect new feature \ No newline at end of file +- Update example to reflect new feature + +## 0.2.6 +- Created new parameter called onDonate which allows for custom code to be executed instead of the typical url launcher method. Thanks to [@FriesI23](https://github.com/FriesI23) +- Add pubspec.lock to .gitignore based on [this](https://stackoverflow.com/a/16136740) StackOverflow post \ No newline at end of file diff --git a/example/pubspec.lock b/example/pubspec.lock index 85f51c7..a1677f0 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -5,49 +5,56 @@ packages: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.17.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: "1989d917fbe8e6b39806207df5a3fdd3d816cbd090fac2ce26fb45e9a71476e5" + url: "https://pub.dev" source: hosted version: "1.0.4" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" flutter: @@ -61,12 +68,13 @@ packages: path: ".." relative: true source: path - version: "0.1.6" + version: "0.2.6" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -83,56 +91,64 @@ packages: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "075f927ebbab4262ace8d0b283929ac5410c0ac4e7fc123c76429564facfb757" + url: "https://pub.dev" source: hosted version: "2.1.2" simple_icons: dependency: transitive description: name: simple_icons - url: "https://pub.dartlang.org" + sha256: "8890377365ca4e6593effb3a9efb159b3d8b0f6d77e866b84a56a8ecdbf73ebf" + url: "https://pub.dev" source: hosted version: "7.1.0" sky_engine: @@ -144,107 +160,122 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" url_launcher: dependency: transitive description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: "4f0d5f9bf7efba3da5a7ff03bd33cc898c84bac978c068e1c94483828e709592" + url: "https://pub.dev" source: hosted version: "6.1.5" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: b693e6698f7e6985710d67a050e3acbdda3b9cfc4b43b9f1c40cdbe42c705b92 + url: "https://pub.dev" source: hosted version: "6.0.15" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: e51a93f0da65733beb69fdbc43cea524d86ed8e524479e9faefc9304cec34a57 + url: "https://pub.dev" source: hosted version: "6.0.15" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: c3ec89d52305ec647cf037eafe2be8d2f1149b5723d1f2ec716fc3d58469de5d + url: "https://pub.dev" source: hosted version: "3.0.0" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: c028c7f80fdb99cf48b94c471c0f8b9b855a188f4865df76e2a7663ae640e9d2 + url: "https://pub.dev" source: hosted version: "3.0.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: "80b860b31a11ebbcbe51b8fe887efc204f3af91522f3b51bcda4622d276d2120" + url: "https://pub.dev" source: hosted version: "2.1.0" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: "2b5494722d4eb0fe1a12ceb15a4b132ba7dfc92793089c243bf109bed828d97f" + url: "https://pub.dev" source: hosted version: "2.0.9" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: aa14bdb9265fa22416fc387b33e44eb37fd38768bf465fafcec73d283f3457b1 + url: "https://pub.dev" source: hosted version: "3.0.0" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" sdks: - dart: ">=2.17.0-0 <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=2.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index e248e31..4a37e33 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_donation_buttons description: A collection of your most used donation/support buttons to support your development. -version: 0.1.6 +version: 0.2.6 homepage: https://github.com/Flajt/flutter_donation_buttons repository: https://github.com/Flajt/flutter_donation_buttons environment: From 62601843016fbf40ca38efd3362feeeb3356a282 Mon Sep 17 00:00:00 2001 From: Flajt Date: Thu, 1 Jun 2023 19:40:30 +0200 Subject: [PATCH 3/3] Fix+Chore: Replace print with debugPrint, update version num, update changelog --- CHANGELOG.md | 5 ++++- lib/donationButtons/buyMeACoffeeButton.dart | 2 +- lib/donationButtons/ko-fiButton.dart | 2 +- lib/donationButtons/patreonButton.dart | 2 +- lib/donationButtons/paypalButton.dart | 2 +- pubspec.yaml | 2 +- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51efacc..591bfde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,4 +35,7 @@ Fixed some small staff in the documentation, tried to format the data better ## 0.2.6 - Created new parameter called onDonate which allows for custom code to be executed instead of the typical url launcher method. Thanks to [@FriesI23](https://github.com/FriesI23) -- Add pubspec.lock to .gitignore based on [this](https://stackoverflow.com/a/16136740) StackOverflow post \ No newline at end of file +- Add pubspec.lock to .gitignore based on [this](https://stackoverflow.com/a/16136740) StackOverflow post + +## 0.2.7 +- Replace print with `debugPrint` in `try catch` statements \ No newline at end of file diff --git a/lib/donationButtons/buyMeACoffeeButton.dart b/lib/donationButtons/buyMeACoffeeButton.dart index 0dd540e..4969d53 100644 --- a/lib/donationButtons/buyMeACoffeeButton.dart +++ b/lib/donationButtons/buyMeACoffeeButton.dart @@ -50,7 +50,7 @@ class BuyMeACoffeeButton extends StatelessWidget { ? onLaunchURL!(baseUrl + buyMeACoffeeName) : launchUrlString(baseUrl + buyMeACoffeeName)); } catch (e) { - print("Error: $e"); + debugPrint("Error: $e"); } if (onDonation != null) { onDonation!(); diff --git a/lib/donationButtons/ko-fiButton.dart b/lib/donationButtons/ko-fiButton.dart index 4725ae2..b61f235 100644 --- a/lib/donationButtons/ko-fiButton.dart +++ b/lib/donationButtons/ko-fiButton.dart @@ -55,7 +55,7 @@ class KofiButton extends StatelessWidget { ? onLaunchURL!(baseUrl + kofiName) : launchUrlString(baseUrl + kofiName)); } catch (e) { - print("Error: $e"); + debugPrint("Error: $e"); } if (onDonation != null) { onDonation!(); diff --git a/lib/donationButtons/patreonButton.dart b/lib/donationButtons/patreonButton.dart index 951c788..4a991f0 100644 --- a/lib/donationButtons/patreonButton.dart +++ b/lib/donationButtons/patreonButton.dart @@ -42,7 +42,7 @@ class PatreonButton extends StatelessWidget { ? onLaunchURL!(baseUrl + patreonName) : launchUrlString(baseUrl + patreonName)); } catch (e) { - print("Error: $e"); + debugPrint("Error: $e"); } if (onDonation != null) { onDonation!(); diff --git a/lib/donationButtons/paypalButton.dart b/lib/donationButtons/paypalButton.dart index a089587..8e65294 100644 --- a/lib/donationButtons/paypalButton.dart +++ b/lib/donationButtons/paypalButton.dart @@ -54,7 +54,7 @@ class PayPalButton extends StatelessWidget { ? onLaunchURL!(baseUrl + paypalButtonId) : launchUrlString(baseUrl + paypalButtonId)); } catch (e) { - print("Error: $e"); + debugPrint("Error: $e"); } if (onDonation != null) { onDonation!(); diff --git a/pubspec.yaml b/pubspec.yaml index 4a37e33..693491f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_donation_buttons description: A collection of your most used donation/support buttons to support your development. -version: 0.2.6 +version: 0.2.7 homepage: https://github.com/Flajt/flutter_donation_buttons repository: https://github.com/Flajt/flutter_donation_buttons environment: