Flutter Plugin for Square In-App Payments SDK

Last update: Jun 21, 2022

Flutter plugin for In-App Payments SDK

Build Status Pub

The Flutter plugin for Square In-App Payments SDK is a wrapper for the native Android and iOS SDKs and supports the following native In-App Payments SDK versions:

  • iOS: 1.4.0
  • Android: 1.4.0

Additional documentation

In addition to this README, the following is available in the flutter plugin GitHub repo:

Build requirements

Flutter

A version of Flutter greater than 1.12 is required for v2 embedding support. Any application that uses v1 embeddings for android will still be backwards compatible and supported.

Android

  • Android minSdkVersion is API 21 (Lollipop, 5.0) or higher.
  • Android Target SDK version: API 27 (Oreo, 8.1).
  • Android SDK build tools: 26.0.3
  • Android Gradle Plugin: 3.0.0 or greater.
  • Support library: 27.1.1
  • Google Play Services: 16.0.1
  • Google APIs Intel x86 Atom_64 System Image

iOS

  • Xcode version: 9.1 or greater.
  • iOS Base SDK: 11.1 or greater.
  • Deployment target: iOS 11.0 or greater.

In-App Payments SDK requirements and limitations

  • In-App Payments SDK cannot issue refunds. Refunds can be issued programmatically using the Refunds API or manually in the Square Dashboard.

Sample applications

License

Copyright 2019 Square Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

GitHub

https://github.com/square/in-app-payments-flutter-plugin
Comments
  • 1. SDK uses legacy v1 or v2 Square API?

    Describe your question

    I'm trying to understand if this SDK uses legacy v1 or v2 Square API

    When I enter my v2 sandbox APPLICATION_ID I get this response on the client mobile application Screen Shot 2019-09-13 at 4 36 00 PM

    When I enter the Legacy Sandbox Application ID the request goes from the client to the server. I do get another error on the server but that is a different issue: Screen Shot 2019-09-13 at 5 16 00 PM

    The only place I enter my application ID is in the following function

      Future<void> _initSquarePayment() async {
         await InAppPayments.setSquareApplicationId('APPLICATION_ID');
      }
    
    Reviewed by tonydiaz at 2019-09-13 21:08
  • 2. Can't build apk

    I cannot build apk, but i can debug. please help..

    thnx

    Execution failed for task ':square_in_app_payments:verifyReleaseResources'.

    java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed D:\Client\Grocerr\grocerr\build\square_in_app_payments\intermediates\res\merged\release\values-v28\values-v28.xml:7: error: resource android:attr/dialogCornerRadius not found. D:\Client\Grocerr\grocerr\build\square_in_app_payments\intermediates\res\merged\release\values-v28\values-v28.xml:11: error: resource android:attr/dialogCornerRadius not found. D:\Client\Grocerr\grocerr\build\square_in_app_payments\intermediates\res\merged\release\values\values.xml:2949: error: resource android:attr/fontVariationSettings not found. D:\Client\Grocerr\grocerr\build\square_in_app_payments\intermediates\res\merged\release\values\values.xml:2950: error: resource android:attr/ttcIndex not found. error: failed linking references.

    Reviewed by tegab at 2019-03-04 00:28
  • 3. Exception: sqip.internal.event.LogEventsResponse not present

    We started getting a hard crash/exception only on Android phones only when the user is trying add a new card and either backs out (by clicking the back arrow) or successfully adds a card and we call InAppPayments.completeCardEntry(...) to complete the entry and dismiss sqip screen (it crashes as sqip card screen is being dismissed).

    This issue doesn't happen on iOS - only Android. This issue also doesn't happen when running in debug mode. It seems to occur 100% of the time when running a released build on a device. This issue got introduced with one of the recent upgrades of the various libraries we're using, though doesn't seem like going from sqip 1.2.2 to 1.2.3 is the root cause (tried both sqip versions as well as Flutter up to 1.9.1 hotfix 6).

    Hopefully the following exception will be sufficient to track this, though let me know if you need any more info. Thank you!

    EXCEPTION

    Fatal Exception: java.lang.TypeNotPresentException: 
    Type sqip.internal.event.LogEventsResponse not present
           at libcore.reflect.ParameterizedTypeImpl.getRawType(ParameterizedTypeImpl.java:67)
           at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:76)
           at libcore.reflect.ListOfTypes.resolveTypes(ListOfTypes.java:70)
           at libcore.reflect.ListOfTypes.getResolvedTypes(ListOfTypes.java:55)
           at libcore.reflect.ParameterizedTypeImpl.getResolvedType(ParameterizedTypeImpl.java:75)
           at libcore.reflect.Types.getType(Types.java:56)
           at java.lang.reflect.Method.getGenericReturnType(Method.java:177)
           at j.M.a(:2)
           at j.L.a(:8)
           at j.K.invoke(:5)
           at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
           at $Proxy3.a()
           at sqip.internal.b.c$a.a(:59)
           at sqip.internal.b.c$a.a(:1)
           at sqip.internal.b.d.run(:1)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
           at java.lang.Thread.run(Thread.java:919)
    

    ENVIRONMENT

    [✓] Flutter (Channel unknown, v1.7.10, on Mac OS X 10.14.6 18G95, locale en-US) [✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3) [✓] Xcode - develop for iOS and macOS (Xcode 11.1) [✓] Android Studio (version 3.5) [✓] VS Code (version 1.39.2)

    square_in_app_payments: ^1.2.3

    Reviewed by d3vtoolsmith at 2019-10-31 04:50
  • 4. Lost connection to device on back button tap

    I having a problem with the plugin when tapping the back button on a new flutter project with Android X support. The app launches the card entry form but when tapping the back button it loses connection and the app ends.

    [√] Flutter (Channel stable, v1.12.13+hotfix.5, on Microsoft Windows [Version 10.0.18362.535], [√] Android toolchain - develop for Android devices (Android SDK version 28.0.3) [√] Android Studio (version 3.5) [√] VS Code, 64-bit edition (version 1.41.0) [√] Connected device (1 available)

    Also how can I modify error messages that say 'Something went wrong. Please contact the developer of this application and provide them with this error code:'?

    Thanks

    Reviewed by PizzaLober at 2019-12-18 01:16
  • 5. App crash after card entry complete

    Hi Square team,

    I am trying to use this plugin to process in app payments in my flutter app. I enter the test card details i.e. 411111111111 ... and then hit the save button once all card details are entered. The check mark appears and then the app crashes with the following error:

    2020-01-02 21:39:06.053 7470-7470/com.phrasing.grocery_bullet E/AndroidRuntime: FATAL EXCEPTION: main Process: com.phrasing.grocery_bullet, PID: 7470 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=51789, result=-1, data=Intent { (has extras) }} to activity {com.phrasing.grocery_bullet/com.phrasing.grocery_bullet.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.app.Activity.getResources()' on a null object reference at android.app.ActivityThread.deliverResults(ActivityThread.java:4845) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.app.Activity.getResources()' on a null object reference at sqip.flutter.internal.CardEntryModule.readCardEntryCloseExitAnimationDurationMs(CardEntryModule.java:215) at sqip.flutter.internal.CardEntryModule.access$500(CardEntryModule.java:52) at sqip.flutter.internal.CardEntryModule$1$1.onResult(CardEntryModule.java:86) at sqip.flutter.internal.CardEntryModule$1$1.onResult(CardEntryModule.java:73) at sqip.internal.CardEntryActivity$Companion.onActivityResult(CardEntryActivity.kt:596) at sqip.CardEntry.handleActivityResult(CardEntry.kt:58) at sqip.flutter.internal.CardEntryModule$1.onActivityResult(CardEntryModule.java:73) at io.flutter.embedding.engine.FlutterEnginePluginRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEnginePluginRegistry.java:634) at io.flutter.embedding.engine.FlutterEnginePluginRegistry.onActivityResult(FlutterEnginePluginRegistry.java:367) at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onActivityResult(FlutterActivityAndFragmentDelegate.java:546) at io.flutter.embedding.android.FlutterActivity.onActivityResult(FlutterActivity.java:594) at android.app.Activity.dispatchActivityResult(Activity.java:8110) at android.app.ActivityThread.deliverResults(ActivityThread.java:4838) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4886)  at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:214)  at android.app.ActivityThread.main(ActivityThread.java:7356)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) ### Describe your question

    Reviewed by scottynoshotty at 2020-01-03 06:06
  • 6. Please help

    I am at the last stage of my app. I have this major issue that i have been ignoring for awhile.

    I can never get canUseGooglePay to true. My setting is on google_pay_constants.environmentTest. I have tried on device and simulator, it doesn't matter. When i run your git, it will come up true. The difference on mine is, I am on androidx. This is the last stage to my project. My squareLocationId and squareApplicationId is set correctly.

    await InAppPayments.initializeGooglePay( squareLocationId, google_pay_constants.environmentTest); canUseGooglePay = await InAppPayments.canUseGooglePay;

    Reviewed by tegab at 2019-03-21 02:05
  • 7. Crash on clicking SAVE button

    Initially it was working perfectly but after i tried to add firebase notification to my project this is getting crash in android side only.

    I added "apply plugin: 'com.google.gms.google-services'" in app/build.gradle and classpath 'com.google.gms:google-services:4.3.3' in android/build.gradle file and run in android.

    In Card Entry Page after i enter the card details when i click SAVE button, the indicator animates and the after 1 2 seconds it crashes.

    this is the error

    E/AndroidRuntime(24359): FATAL EXCEPTION: CardResultHandler
    E/AndroidRuntime(24359): Process: com.possibility.algo, PID: 24359
    E/AndroidRuntime(24359): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.runOnUiThread(java.lang.Runnable)' on a null object reference
    E/AndroidRuntime(24359): 	at sqip.flutter.internal.CardEntryModule$1.handleEnteredCardInBackground(CardEntryModule.java:96)
    E/AndroidRuntime(24359): 	at sqip.internal.CardEntryActivityController$onCardNonceSuccess$1.run(CardEntryActivityController.kt:151)
    E/AndroidRuntime(24359): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    E/AndroidRuntime(24359): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    E/AndroidRuntime(24359): 	at java.lang.Thread.run(Thread.java:919)
    

    Please help me with this issue.

    Reviewed by ankitpanwar8979 at 2021-03-28 13:37
  • 8. FormatException when decoding the json.

    Describe the issue

    I was following the documentation on setting up the payment processing. Everything looks good except when the user saves the valid card, I get a FormatException when decoding the json. It looks just like the documentation so I am confused if I am missing something.

    Here is the log:

    E/flutter ( 7392): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: FormatException: Unexpected character (at character 1)
    E/flutter ( 7392): <!DOCTYPE html>
    E/flutter ( 7392): ^
    E/flutter ( 7392):
    E/flutter ( 7392): #0      _ChunkedJsonParser.fail  (dart:convert-patch/convert_patch.dart:1392:5)
    E/flutter ( 7392): #1      _ChunkedJsonParser.parseNumber  (dart:convert-patch/convert_patch.dart:1259:9)
    E/flutter ( 7392): #2      _ChunkedJsonParser.parse  (dart:convert-patch/convert_patch.dart:924:22)
    E/flutter ( 7392): #3      _parseJson  (dart:convert-patch/convert_patch.dart:29:10)
    E/flutter ( 7392): #4      JsonDecoder.convert  (dart:convert/json.dart:493:36)
    E/flutter ( 7392): #5      JsonCodec.decode  (dart:convert/json.dart:151:41)
    E/flutter ( 7392): #6      _EventLayoutState.chargeCard 
    package:link/…/events_list/list_page.dart:422
    E/flutter ( 7392): <asynchronous suspension>
    E/flutter ( 7392): #7      _EventLayoutState._makeCharge 
    package:link/…/events_list/list_page.dart:436
    E/flutter ( 7392): <asynchronous suspension>
    E/flutter ( 7392): #8      _EventLayoutState._cardNonceRequestSuccess 
    package:link/…/events_list/list_page.dart:403
    E/flutter ( 7392): #9      InAppPayments._nativeCallHandler 
    package:square_in_app_payments/in_app_payments.dart:77
    E/flutter ( 7392): <asynchronous suspension>
    E/flutter ( 7392): #10     MethodChannel._handleAsMethodCall 
    package:flutter/…/services/platform_channel.dart:397
    E/flutter ( 7392): <asynchronous suspension>
    E/flutter ( 7392): #11     MethodChannel.setMethodCallHandler.<anonymous closure> 
    package:flutter/…/services/platform_channel.dart:365
    E/flutter ( 7392): #12     _DefaultBinaryMessenger.handlePlatformMessage 
    package:flutter/…/services/binary_messenger.dart:110
    E/flutter ( 7392): <asynchronous suspension>
    E/flutter ( 7392): #13     _invoke3.<anonymous closure>  (dart:ui/hooks.dart:280:15)
    E/flutter ( 7392): #14     _rootRun  (dart:async/zone.dart:1124:13)
    E/flutter ( 7392): #15     _CustomZone.run  (dart:async/zone.dart:1021:19)
    E/flutter ( 7392): #16     _CustomZone.runGuarded  (dart:async/zone.dart:923:7)
    E/flutter ( 7392): #17     _invoke3  (dart:ui/hooks.dart:279:10)
    
    

    -->

    To Reproduce

    Steps to reproduce the issue.

    1. Read the documentation https://github.com/square/in-app-payments-flutter-plugin/blob/master/example/take_a_payment.md
    2. Call the function InAppPayments.startCardEntryFlow()
    3. Complete form and get a nonce
    4. Make the charge (which I still don't know how to set a PRICE to the transaction using Heroku)
    5. Pass in the CardDetails result and the chargeUrl string.

    Here the piece of code that reproduce the issue.

      Future<void> chargeCard(CardDetails result, String chargeUrl) async {
      var body = jsonEncode({"nonce": result.nonce});
      http.Response response;
      try {
        response = await http.post(chargeUrl, body: body, headers: {
          "Accept": "application/json",
          "content-type": "application/json"
        });
      } on SocketException catch (ex) {
        throw ChargeException(ex.message);
      }
    
      var responseBody = json.decode(response.body); // FormatException occurs 
      if (response.statusCode == 200) {
        return;
      } else {
        throw ChargeException(responseBody["errorMessage"]);
      }
    }
    

    Expected behavior

    To make a transaction and NOT break the app. Also want to pass in a PRICE variable but don't know how to do it.

    Environment (please complete the following information):

    • platform: Android
    • OnePlus 6T OxygenOS version 9.0.16
    • Windows
    • square_in_app_payments: ^1.2.2
    Doctor summary (to see all details, run flutter doctor -v):
    [√] Flutter (Channel stable, v1.7.8+hotfix.4, on Microsoft Windows [Version 10.0.17763.678], locale en-US)
    
    [√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    [!] Android Studio (version 3.4)
      X Flutter plugin not installed; this adds Flutter specific functionality.
      X Dart plugin not installed; this adds Dart specific functionality.
    [√] VS Code (version 1.37.1)
    [√] Connected device (1 available)
    
    ! Doctor found issues in 1 category.
    

    Screenshots

    Json Decoder

    Additional context

    I should note that a transaction of $0.01 did occur but not fully. It has been refunded.

    Reviewed by mike-gallego at 2019-08-29 00:12
  • 9. square_in_app_payments App Crash on Android release mode

    Describe the issue

    App is working fine on android debug mode and also in iOS but crashing on android release mode

    ** My Implementation ** Future onStartCardEntryFlow(String? appID) async { // this.amountPayable = amountPayable; await InAppPayments.setSquareApplicationId(appID ?? squareApplicationId); if (Platform.isIOS) { await _setIOSCardEntryTheme(); } await InAppPayments.startCardEntryFlow( onCardNonceRequestSuccess: _onCardEntryCardNonceRequestSuccess, onCardEntryCancel: () {}, collectPostalCode: false); }

    Environment (please complete the following information):

    To Reproduce

    Below is a one file example which shows the problem. There is also a repo available at: https://github.com/rmorrin/square-navbar-repro which includes comparison of the different behaviour when the plugin is launched from pages with and without an AppBar. This is all using v1.7.1 of the package, which is the latest at the time of writing.

    main.dart

    import 'package:flutter/material.dart';
    import 'package:flutter/services.dart';
    import 'package:square_in_app_payments/in_app_payments.dart';
    
    void main() async {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            textButtonTheme: TextButtonThemeData(
              style: TextButton.styleFrom(
                primary: Colors.white,
                backgroundColor: Colors.blue,
              ),
            ),
          ),
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      @override
      void initState() {
        super.initState();
        _setSystemChrome();
        _initSquarePayment();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(),
          body: Center(
            child: TextButton(
              child: Text(
                'Pay Now',
              ),
              onPressed: () async {
                await InAppPayments.startCardEntryFlow(
                  onCardNonceRequestSuccess: (_) => InAppPayments.completeCardEntry(
                    onCardEntryComplete: () => debugPrint('Payment complete'),
                  ),
                  onCardEntryCancel: () => debugPrint('Card entry cancelled'),
                  collectPostalCode: true,
                );
              },
            ),
          ),
        );
      }
    
      Future<void> _initSquarePayment() async {
        await InAppPayments.setSquareApplicationId('REPLACE_ME');
      }
    
      void _setSystemChrome() {
        // Setup the status bar colors
        SystemChrome.setSystemUIOverlayStyle(
          SystemUiOverlayStyle(
            systemNavigationBarColor: Colors.white,
            systemNavigationBarIconBrightness: Brightness.dark,
          ),
        );
      }
    }
    
    

    Expected behavior

    Previously set nav bar icon brightness is restored when returning back to Flutter application from the card entry screen. Behaviour should be equivalent regardless of whether the calling page includes an AppBar.

    Environment:

    • Platform: Android
    • OS and version: 11 (RQ2A.210505.002) but occurs on other Android versions also
    • dev environment: macOS
    • In-App Payments Plugin version: 1.7.1
    $ flutter doctor -v
    [✓] Flutter (Channel stable, 2.0.3, on macOS 11.2.3 20D91 darwin-x64, locale en-GB)
        • Flutter version 2.0.3 at /Users/ryan/Development/flutter
        • Framework revision 4d7946a68d (3 months ago), 2021-03-18 17:24:33 -0700
        • Engine revision 3459eb2436
        • Dart version 2.12.2
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
        • Android SDK at /Users/ryan/Library/Android/sdk
        • Platform android-S, build-tools 30.0.3
        • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 12.5, Build version 12E262
        • CocoaPods version 1.10.1
    
    [✓] Android Studio (version 4.1)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    
    [✓] VS Code (version 1.56.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.23.0
    
    [✓] Connected device (1 available)
        • Android SDK built for x86 (mobile) • emulator-5556 • android-x86 • Android 10 (API 29) (emulator)
    
    • No issues found!
    

    Screenshots

    Example page with AppBar (notice broken nav bar icons) app-bar-out

    Example page without AppBar (working as expected) without-app-bar-out

    Additional context

    I did find a potential workaround which involves calling SystemChrome.setSystemUIOverlayStyle again in the various card entry flow callbacks. While this does work, it's obviously not ideal and there's also a brief flash of the nav bar in its broken state before the SystemChrome is updated.

    Any advice you could offer on how to resolve this would be hugely appreciated, I've tried various combinations of different theme settings and options within the native Android application, as well as a number of relevant AppBar/ThemeData properties, but nothing seems change this behaviour.

    Reviewed by rmorrin at 2021-06-14 22:36

Related

Admob Flutter plugin that shows banner ads using native platform views.
Admob Flutter plugin that shows banner ads using native platform views.

admob_flutter A Flutter plugin that uses native platform views to show Admob banner ads! This plugin also has support for Interstitial and Reward ads.

Jun 6, 2022
A Flutter plugin to fetch system messages, stacktraces etc.

logcat Flutter plugin to get system messages, stack traces etc and show them in app. Can also be used to get the app logs from a remote device with sh

Jul 25, 2021
Flutter Facebook Audience Network
Flutter Facebook Audience Network

facebook_audience_network Facebook Audience Network plugin for Flutter applications (Android & iOS). Banner Ad Native Banner Ad Native Ad Interstitial

Jun 9, 2022
A flutter application for attendance registration of students which has nodejs as backend server with mongoDb database.

attandanceregister A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Apr 30, 2022
Paystack SDK for Android. Accept payments on Android

Paystack Android This is a library for easy integration of Paystack with your Android application. Use this library in your Android app so we shoulder

Jun 26, 2022
Paystack SDK for iOS. Accept Payments on iOS

Paystack iOS SDK The Paystack iOS SDK make it easy to collect your users' credit card details inside your iOS app. By charging the card immediately on

May 29, 2022
Mobile app to square images by adding padding around it.

Resizrr Mobile app to crop images. Screens ?? How to set-up this project on local machine? Fork this project Then clone the forked project by git clon

Nov 26, 2021
A square animation for flutter

drag_animation A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started i

Nov 30, 2021
Body Mass Index (BMI) - a person’s weight in kilograms divided by the square of height in meters
Body Mass Index (BMI) - a person’s weight in kilograms divided by the square of height in meters

Body Mass Index (BMI) is a person’s weight in kilograms divided by the square of height in meters. A high BMI can indicate high body fatness. BMI screens for weight categories that may lead to health problems, but it does not diagnose the body fatness or health of an individual.

Jun 7, 2022
Square progress bar
Square progress bar

Square progress bar because why not ?? Features Dynamic sizing Animated progress bar Gradient color progress bar Prgreess bar cap shape customization

Jun 9, 2022
A flutter plugin for integrating Mobile Money Payments to your flutter apps
A flutter plugin for integrating Mobile Money Payments to your flutter apps

Add Mobile Money payments to your flutter apps using the FlutterWave api gateway. Features Recieve Payments through Mobile Money in Uganda Supports MT

May 18, 2022
A lightweight Flutter plugin for making payments and printing on MyPos

my_poster ?? my_poster is in beta - please provide feedback (and/or contribute) if you find issues ??️ A lightweight Flutter plugin for making payment

May 30, 2021
A robust Flutter plugin for making payments via Paystack Payment Gateway. Completely supports Android and iOS
A robust Flutter plugin for making payments via Paystack Payment Gateway. Completely supports Android and iOS

?? Paystack Plugin for Flutter A Flutter plugin for making payments via Paystack Payment Gateway. Fully supports Android and iOS. ?? Installation To u

Jun 27, 2022
Flutter app that helps you manage your payments.
Flutter app that helps you manage your payments.

?? PayFlow Screenshots | Tecnologias | Projeto | Licença ?? Screenshots ?? Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: Flu

Jan 1, 2022
Item selling mobile app with secure payments with Payhere payment gateway. Auto APK generation with github actions CI/CD.

payhere_demo A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Jan 20, 2022
💳 A Flutter package for making payments via credo central. Provides support for both Android and iOS

?? Credo Package for Flutter TODO: Put a short description of the package here that helps potential users know whether this package might be useful fo

Dec 26, 2021
Woocommerce SDK for Flutter. The Complete Woo Commerce SDK for Flutter.
Woocommerce SDK for Flutter. The Complete Woo Commerce SDK for Flutter.

woocommerce Woocommerce SDK for Flutter. Getting Started Add the package to your pubspec.yaml and import. import 'package:woocommerce/woocommerce.dart

Jun 8, 2022
A Flutter plugin for Yandex AppMetrica SDK, a marketing platform for app install attribution, app analytics, and push campaigns.

appmetrica_sdk A Flutter plugin for Yandex AppMetrica SDK. Plugin implementation status Implemented Events Profiles Not implemented yet Revenue. Comin

Oct 21, 2021
A flutter plugin to get facebook deep links and log app events using the latest Facebook SDK to include support for iOS 14

Facebook Sdk For Flutter LinkedIn GitHub facebook_sdk_flutter allows you to fetch deep links, deferred deep links and log facebook app events. This wa

Jun 23, 2022
A Flutter plugin for the Google Mobile Ads SDK

A Flutter plugin for the Google Mobile Ads SDK

Jun 24, 2022