├── .gitignore
├── .metadata
├── CHANGELOG.md
├── LICENSE
├── README.md
├── android
├── .gitignore
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── settings.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ └── ar
│ └── com
│ └── p39
│ └── mercado_pago_mobile_checkout
│ └── MercadoPagoMobileCheckoutPlugin.kt
├── example
├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── ar
│ │ │ │ │ └── com
│ │ │ │ │ └── p39
│ │ │ │ │ └── mercado_pago_mobile_checkout_example
│ │ │ │ │ └── example
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Podfile.lock
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ │ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
├── lib
│ └── main.dart
├── pubspec.lock
├── pubspec.yaml
└── test
│ └── widget_test.dart
├── ios
├── .gitignore
├── Assets
│ └── .gitkeep
├── Classes
│ ├── MercadoPagoMobileCheckoutPlugin.h
│ ├── MercadoPagoMobileCheckoutPlugin.m
│ └── SwiftMercadoPagoMobileCheckoutPlugin.swift
└── mercado_pago_mobile_checkout.podspec
├── lib
├── mercado_pago_mobile_checkout.dart
└── src
│ ├── payment_result.dart
│ ├── payment_result.freezed.dart
│ └── payment_result.g.dart
├── mercado_pago_mobile_checkout.iml
├── pubspec.lock
├── pubspec.yaml
└── test
└── mercado_pago_mobile_checkout_test.dart
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .dart_tool/
3 |
4 | .packages
5 | .pub/
6 |
7 | .idea/
8 |
9 | build/
10 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: f139b11009aeb8ed2a3a3aa8b0066e482709dde3
8 | channel: stable
9 |
10 | project_type: plugin
11 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.2.1
2 |
3 | * Package discontinued
4 |
5 | ## 0.2.0-dev.4
6 |
7 | * FIXES [#60] - Fix Cast error
8 |
9 | ## 0.2.0-dev.3
10 |
11 | * Force px-android to 4.53.2 (Thanks tonycesar)
12 |
13 | ## 0.2.0-dev.2
14 |
15 | * Dependencies updates (Thanks pabrcno)
16 |
17 | ## 0.2.0-dev.1
18 |
19 | * Upgrade px-android to 4.53
20 | * Now MinSDK for Android is 21 to match px-android
21 |
22 | ## 0.1.0
23 |
24 | * null-safety support (Thanks Gonzaa25)
25 | * fix return type (Thanks Rodrigo Pequeno)
26 |
27 | ## 0.0.3
28 |
29 | * FIXES [#12]
30 | * Example app updated to the latest stable SDK
31 |
32 | ## 0.0.2
33 |
34 | * Map more fields from Android/iOS to dart when the payment is success
35 | * Set min Flutter SDK to 1.12
36 | * BREAKING: Enable AndroidX for the library. You may need to upgrade your project.
37 | * BREAKING: startCheckout now return an object instead of a generic Map
38 | * FIXES [#4] - minSdkVersion is now 19, same as px-android
39 |
40 | ## 0.0.1-dev+1
41 |
42 | * Mark version as development so we can break the public API if needed
43 |
44 | ## 0.0.1
45 |
46 | * TODO: Describe initial release.
47 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Ricardo Markiewicz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # px-flutter
2 |
3 | Mercado Pago's Unofficial Flutter checkout library
4 |
5 | ---
6 | >Made with ❤️ by Ricardo Markiewicz // [@gazeria](https://twitter.com/gazeria).
7 |
8 | ## THIS PACKAGE IS DEPRECATED
9 |
10 | MercadoPago has discontinue Quick Checkout for Android and iOS.
11 |
12 | The official recommendation is to use a webview using Checkout Bricks.
13 |
14 | ## What is this?
15 |
16 | Flutter implementation of [MercadoPago Mobile Checkout](https://www.mercadopago.com.ar/developers/es/guides/payments/mobile-checkout/introduction/)
17 |
18 | ## Before to start
19 |
20 | This is a Work in progress project!, so please use with care and report the issues and feature request to our Github page. Thanks!
21 |
22 | ## Getting Started
23 |
24 | * Create an account in MercadoPago, you may need to choose the country where you want to accept payments.
25 | * Create an [Application](https://applications.mercadopago.com/)
26 | * Go to the credentials page (the url may change depending the country, but looks like https://www.mercadopago.com/mla/account/credentials) and get the Public Key of the new app
27 | ** SECURITY WARNING: Do not use the Access Token, ClientID or Client Secret in your mobile application.
28 | * Call your backend to create a Checkout Preference and get a PreferenceId
29 | ** TODO: Add more documentation about preferences
30 | * In your Flutter code, call `MercadoPagoMobileCheckout.startCheckout()` to allow the user to pay
31 | * Save the payment response into your database.
32 |
33 | ## Setup
34 |
35 | ### Android
36 |
37 | Nothing special to do, just add the plugin and use it.
38 |
39 | ### iOS
40 |
41 | At the moment we need to setup a UINavigationController manually because the one that Flutter provides do not work with MercadoPago px-ios.
42 |
43 | You need to setup your root view controller as UINavigationController in your AppDelegate of the ios folder of your app:
44 |
45 | ```swift
46 | // AppDelegate.swift
47 |
48 | import UIKit
49 | import Flutter
50 |
51 | @UIApplicationMain
52 | @objc class AppDelegate: FlutterAppDelegate {
53 | var navigationController: UINavigationController?;
54 |
55 | override func application(
56 | _ application: UIApplication,
57 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
58 | ) -> Bool {
59 | // Add this line before GeneratedPluginRegistrant
60 | let flutterViewController: FlutterViewController = window?.rootViewController as! FlutterViewController
61 |
62 | // This line is added by the Flutter App Generator
63 | GeneratedPluginRegistrant.register(with: self)
64 |
65 | // Add these lines after GeneratedPluginRegistrant
66 | self.navigationController = UINavigationController(rootViewController: flutterViewController);
67 | self.navigationController?.setNavigationBarHidden(true, animated: false);
68 |
69 | self.window = UIWindow(frame: UIScreen.main.bounds);
70 | self.window.rootViewController = self.navigationController;
71 | self.window.makeKeyAndVisible();
72 | // End of edit
73 |
74 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
75 | }
76 | }
77 | ```
78 |
79 | Also, by default Flutter creates the iOS app to target a version that is not supported by px-ios. So, you need to open `ios/Podfile`, uncomment and edit the line that says:
80 |
81 | ```
82 | # Uncomment this line to define a global platform for your project
83 | platform :ios, '8.0'
84 | ```
85 |
86 | and change it to
87 |
88 | ```
89 | # Uncomment this line to define a global platform for your project
90 | platform :ios, '10.0'
91 | ```
92 |
93 | And also, add `use_modular_headers!` to the `Runner` target.
94 |
95 | ## Installation
96 |
97 | Add this to your package's pubspec.yaml file:
98 |
99 | ```yaml
100 | dependencies:
101 | mercado_pago_mobile_checkout: ^0.1.1
102 | ```
103 |
104 | Add the following import to your Dart code:
105 |
106 | ```dart
107 | import 'package:mercado_pago_mobile_checkout/mercado_pago_mobile_checkout.dart';
108 | ```
109 |
110 | ## F.A.Q.
111 |
112 | #### Why not px_flutter instead of mercado_pago_mobile_checkout?
113 |
114 | > Honestly, I think that 'px_flutter' is shorter but more difficult to discover if you do not know that the native ones are called px-something.
115 | >
116 | > Also maybe in the future, MercadoPago may want to use that name to release their own version and I do not want to argue with them about a name :).
117 |
118 | #### I can't make payments or a red rectangle is show
119 |
120 | Please check the email that you are using to create the preferenceId. Some emails in the original documentation gives problems so try to use a real email.
121 |
122 | Also, check that the email used to create the preferenceId is not the same as the used to create the MarcadoPago account.
123 |
124 | #### Does this package support null-safe?
125 |
126 | Yes, from version 0.1.0 we support null-safety on Dart
127 |
128 | ## Need help?
129 |
130 | Create an issue in https://github.com/Gazer/px-flutter
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | group 'ar.com.p39.mercado_pago_mobile_checkout'
2 | version '1.0-SNAPSHOT'
3 |
4 | buildscript {
5 | ext.kotlin_version = '1.3.50'
6 | repositories {
7 | google()
8 | mavenCentral()
9 | }
10 |
11 | dependencies {
12 | classpath 'com.android.tools.build:gradle:4.2.1'
13 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14 | }
15 | }
16 |
17 | rootProject.allprojects {
18 | repositories {
19 | google()
20 | mavenCentral()
21 | maven {
22 | url 'https://artifacts.mercadolibre.com/repository/android-releases/'
23 | }
24 | }
25 | }
26 |
27 | apply plugin: 'com.android.library'
28 | apply plugin: 'kotlin-android'
29 |
30 | android {
31 | compileSdkVersion 32
32 |
33 | sourceSets {
34 | main.java.srcDirs += 'src/main/kotlin'
35 | }
36 | defaultConfig {
37 | // Should be the same as px-android:
38 | // https://github.com/mercadopago/px-android/blob/master/gradle.properties
39 | minSdkVersion 21
40 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
41 | }
42 | lintOptions {
43 | disable 'InvalidPackage'
44 | }
45 | }
46 |
47 | dependencies {
48 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
49 | implementation 'com.mercadopago.android.px:checkout:4.53.2'
50 | }
51 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableR8=true
3 | android.useAndroidX=true
4 | android.enableJetifier=true
5 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'mercado_pago_mobile_checkout'
2 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/android/src/main/kotlin/ar/com/p39/mercado_pago_mobile_checkout/MercadoPagoMobileCheckoutPlugin.kt:
--------------------------------------------------------------------------------
1 | package ar.com.p39.mercado_pago_mobile_checkout
2 |
3 | import android.app.Activity
4 | import android.app.Activity.RESULT_CANCELED
5 | import android.content.Intent
6 | import android.util.Log
7 | import androidx.annotation.NonNull
8 | import com.mercadopago.android.px.core.MercadoPagoCheckout
9 | import com.mercadopago.android.px.model.Payment
10 | import com.mercadopago.android.px.model.exceptions.MercadoPagoError
11 | import io.flutter.embedding.engine.plugins.FlutterPlugin
12 | import io.flutter.embedding.engine.plugins.activity.ActivityAware
13 | import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
14 | import io.flutter.plugin.common.MethodCall
15 | import io.flutter.plugin.common.MethodChannel
16 | import io.flutter.plugin.common.MethodChannel.MethodCallHandler
17 | import io.flutter.plugin.common.MethodChannel.Result
18 | import io.flutter.plugin.common.PluginRegistry.ActivityResultListener
19 | import io.flutter.plugin.common.PluginRegistry.Registrar
20 |
21 | /** MercadoPagoMobileCheckoutPlugin */
22 | public class MercadoPagoMobileCheckoutPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, ActivityResultListener {
23 | /// The MethodChannel that will the communication between Flutter and native Android
24 | ///
25 | /// This local reference serves to register the plugin with the Flutter Engine and unregister it
26 | /// when the Flutter Engine is detached from the Activity
27 | private lateinit var channel : MethodChannel
28 | private var activity: Activity? = null
29 | private var pendingResult: Result? = null
30 |
31 | private val REQUEST_CODE = 13313
32 |
33 | override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
34 | channel = MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "mercado_pago_mobile_checkout")
35 | channel.setMethodCallHandler(this);
36 | }
37 |
38 | // This static function is optional and equivalent to onAttachedToEngine. It supports the old
39 | // pre-Flutter-1.12 Android projects. You are encouraged to continue supporting
40 | // plugin registration via this function while apps migrate to use the new Android APIs
41 | // post-flutter-1.12 via https://flutter.dev/go/android-project-migration.
42 | //
43 | // It is encouraged to share logic between onAttachedToEngine and registerWith to keep
44 | // them functionally equivalent. Only one of onAttachedToEngine or registerWith will be called
45 | // depending on the user's project. onAttachedToEngine or registerWith must both be defined
46 | // in the same class.
47 | companion object {
48 | @JvmStatic
49 | fun registerWith(registrar: Registrar) {
50 | val channel = MethodChannel(registrar.messenger(), "mercado_pago_mobile_checkout")
51 | channel.setMethodCallHandler(MercadoPagoMobileCheckoutPlugin())
52 | }
53 | }
54 |
55 | override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) {
56 | if (call.method == "getPlatformVersion") {
57 | result.success("Android ${android.os.Build.VERSION.RELEASE}")
58 | } else if (call.method == "startCheckout") {
59 | if (pendingResult == null) {
60 | val args = call.arguments as HashMap<*, *>
61 | val publicKey = args["publicKey"] as String
62 | val preferenceId = args["preferenceId"] as String
63 |
64 | Log.d("MercadoPagoPlugin", "Starting checkout for $preferenceId")
65 | startCheckout(publicKey, preferenceId, result)
66 | } else {
67 | result.error("1", "Another operation in progress", null)
68 | }
69 | } else {
70 | result.notImplemented()
71 | }
72 | }
73 |
74 | override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
75 | channel.setMethodCallHandler(null)
76 | }
77 |
78 | private fun startCheckout(publicKey: String, preferenceId: String, result: Result) {
79 | if (activity != null) {
80 | pendingResult = result
81 | MercadoPagoCheckout.Builder(publicKey, preferenceId).build().startPayment(activity!!, REQUEST_CODE)
82 | } else {
83 | result.error("0", "Not ready", null)
84 | }
85 | }
86 |
87 | override fun onDetachedFromActivity() {
88 | Log.d("MercadoPagoPlugin", "onDetachedFromActivity")
89 | activity = null
90 | }
91 |
92 | override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
93 | }
94 |
95 | override fun onAttachedToActivity(binding: ActivityPluginBinding) {
96 | Log.d("MercadoPagoPlugin", "onAttachedToActivity")
97 | activity = binding.activity
98 | binding.addActivityResultListener(this)
99 | }
100 |
101 | override fun onDetachedFromActivityForConfigChanges() {
102 | }
103 |
104 | override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?): Boolean {
105 | Log.d("MercadoPagoPlugin", "onActivityResult")
106 |
107 | if (requestCode == REQUEST_CODE) {
108 | if (resultCode == MercadoPagoCheckout.PAYMENT_RESULT_CODE) {
109 | val payment = data?.getSerializableExtra(MercadoPagoCheckout.EXTRA_PAYMENT_RESULT) as Payment
110 |
111 | val payer = mapOf(
112 | "no-op" to ""
113 | )
114 |
115 | val transactionDetails = mapOf(
116 | "no-op" to ""
117 | )
118 |
119 | //Done!
120 | // TODO Return all fields in the payment and map them to Dart objects
121 | pendingResult?.success(mapOf(
122 | "result" to "done",
123 | "id" to payment.id,
124 | "status" to payment.paymentStatus,
125 | "statusDetail" to payment.paymentStatusDetail,
126 | "paymentMethodId" to payment.paymentMethodId,
127 | "paymentTypeId" to payment.paymentTypeId,
128 | "issuerId" to payment.issuerId,
129 | "installments" to payment.installments,
130 | "captured" to payment.captured,
131 | "liveMode" to payment.liveMode,
132 | "operationType" to payment.operationType,
133 | "payer" to payer,
134 | "transactionAmount" to payment.transactionAmount.toString(),
135 | "transactionDetails" to transactionDetails
136 | ))
137 | } else if (resultCode == RESULT_CANCELED) {
138 | if (data?.extras != null && data.extras?.containsKey(MercadoPagoCheckout.EXTRA_ERROR) == true) {
139 | val mercadoPagoError = data.getSerializableExtra(MercadoPagoCheckout.EXTRA_ERROR) as MercadoPagoError
140 |
141 | pendingResult?.success(mapOf(
142 | "result" to "error",
143 | "errorMessage" to mercadoPagoError.message
144 | ))
145 | } else {
146 | pendingResult?.success(mapOf(
147 | "result" to "canceled"
148 | ))
149 | }
150 | }
151 | pendingResult = null
152 | }
153 | return true
154 | }
155 | }
156 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 |
18 | # The .vscode folder contains launch configuration and tasks you configure in
19 | # VS Code which you may wish to be included in version control, so this line
20 | # is commented out by default.
21 | #.vscode/
22 |
23 | # Flutter/Dart/Pub related
24 | **/doc/api/
25 | **/ios/Flutter/.last_build_id
26 | .dart_tool/
27 | .flutter-plugins
28 | .flutter-plugins-dependencies
29 | .packages
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Web related
35 | lib/generated_plugin_registrant.dart
36 |
37 | # Symbolication related
38 | app.*.symbols
39 |
40 | # Obfuscation related
41 | app.*.map.json
42 |
--------------------------------------------------------------------------------
/example/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled.
5 |
6 | version:
7 | revision: f1875d570e39de09040c8f79aa13cc56baab8db1
8 | channel: stable
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
17 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
18 | - platform: android
19 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
20 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
21 | - platform: ios
22 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
23 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
24 | - platform: linux
25 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
26 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
27 | - platform: macos
28 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
29 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
30 | - platform: web
31 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
32 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
33 | - platform: windows
34 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
35 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # mercado_pago_mobile_checkout_example
2 |
3 | Demonstrates how to use the mercado_pago_mobile_checkout plugin.
4 |
5 | ## Getting Started
6 |
7 | Edit `lib/main.dart` and set your publicKey and a valid preferenceId at the first of the file.
8 |
9 | The preferenceId should be fetch from your backend server. Do not expose your Access Token. Also you can create a preference using curl:
10 |
11 | ```bash
12 | curl -X POST \
13 | 'https://api.mercadopago.com/checkout/preferences?access_token=ACCESS_TOKEN' \
14 | -H 'Content-Type: application/json' \
15 | -d '{
16 | "items": [
17 | {
18 | "title": "Dummy Item",
19 | "description": "Multicolor Item",
20 | "quantity": 1,
21 | "currency_id": "ARS",
22 | "unit_price": 10.0
23 | }
24 | ],
25 | "payer": {
26 | "email": "payer@email.com"
27 | }
28 | }'
29 | ```
30 |
31 | Just be sure that payer email is not the same email as the account you are using as store.
32 |
--------------------------------------------------------------------------------
/example/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at
17 | # https://dart-lang.github.io/linter/lints/index.html.
18 | #
19 | # Instead of disabling a lint rule for the entire project in the
20 | # section below, it can also be suppressed for a single line of code
21 | # or a specific dart file by using the `// ignore: name_of_lint` and
22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 | # producing the lint.
24 | rules:
25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 |
28 | # Additional information about this file can be found at
29 | # https://dart.dev/guides/language/analysis-options
30 |
--------------------------------------------------------------------------------
/example/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/example/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion 32
30 | ndkVersion flutter.ndkVersion
31 |
32 | compileOptions {
33 | sourceCompatibility JavaVersion.VERSION_1_8
34 | targetCompatibility JavaVersion.VERSION_1_8
35 | }
36 |
37 | kotlinOptions {
38 | jvmTarget = '1.8'
39 | }
40 |
41 | sourceSets {
42 | main.java.srcDirs += 'src/main/kotlin'
43 | }
44 |
45 | defaultConfig {
46 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
47 | applicationId "ar.com.p39.mercado_pago_mobile_checkout_example.example"
48 | // You can update the following values to match your application needs.
49 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
50 | minSdkVersion 21
51 | targetSdkVersion flutter.targetSdkVersion
52 | versionCode flutterVersionCode.toInteger()
53 | versionName flutterVersionName
54 | }
55 |
56 | buildTypes {
57 | release {
58 | // TODO: Add your own signing config for the release build.
59 | // Signing with the debug keys for now, so `flutter run --release` works.
60 | signingConfig signingConfigs.debug
61 | }
62 | }
63 | }
64 |
65 | flutter {
66 | source '../..'
67 | }
68 |
69 | dependencies {
70 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
71 | }
72 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/example/android/app/src/main/java/ar/com/p39/mercado_pago_mobile_checkout_example/example/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package ar.com.p39.mercado_pago_mobile_checkout_example.example
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.6.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.1.2'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
7 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/example/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/example/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '10.0'
3 |
4 | install! 'cocoapods', :disable_input_output_paths => true
5 |
6 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
7 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
8 |
9 | project 'Runner', {
10 | 'Debug' => :debug,
11 | 'Profile' => :release,
12 | 'Release' => :release,
13 | }
14 |
15 | def flutter_root
16 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
17 | unless File.exist?(generated_xcode_build_settings_path)
18 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
19 | end
20 |
21 | File.foreach(generated_xcode_build_settings_path) do |line|
22 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
23 | return matches[1].strip if matches
24 | end
25 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
26 | end
27 |
28 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
29 |
30 | flutter_ios_podfile_setup
31 |
32 | target 'Runner' do
33 | use_modular_headers!
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/example/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Flutter (1.0.0)
3 | - FXBlurView (1.6.4)
4 | - JRSwizzle (1.0)
5 | - mercado_pago_mobile_checkout (0.0.1):
6 | - Flutter
7 | - MercadoPagoSDK (~> 4.32.4)
8 | - MLBusinessComponents (= 1.29.0)
9 | - MLCardDrawer (= 1.5.1)
10 | - MLCardForm (= 0.9.1)
11 | - MercadoPagoSDK (4.32.4):
12 | - MercadoPagoSDK/Default (= 4.32.4)
13 | - MLBusinessComponents (~> 1.0)
14 | - MLCardForm (~> 0.1)
15 | - MercadoPagoSDK/Default (4.32.4):
16 | - MLBusinessComponents (~> 1.0)
17 | - MLCardDrawer (~> 1.0)
18 | - MLCardForm (~> 0.1)
19 | - MLUI (~> 5.0)
20 | - MLBusinessComponents (1.29.0):
21 | - MLBusinessComponents/Default (= 1.29.0)
22 | - MLUI (~> 5.0)
23 | - MLBusinessComponents/Default (1.29.0):
24 | - MLUI (~> 5.0)
25 | - MLCardDrawer (1.5.1):
26 | - MLCardDrawer/Default (= 1.5.1)
27 | - MLCardDrawer/Default (1.5.1)
28 | - MLCardForm (0.9.1):
29 | - MLCardDrawer (~> 1.0)
30 | - MLCardForm/Default (= 0.9.1)
31 | - MLUI (~> 5.0)
32 | - MLCardForm/Default (0.9.1):
33 | - MLCardDrawer (~> 1.0)
34 | - MLUI (~> 5.0)
35 | - MLUI (5.25.0):
36 | - MLUI/ActionButton (= 5.25.0)
37 | - MLUI/Core (= 5.25.0)
38 | - MLUI/Helpers (= 5.25.0)
39 | - MLUI/MLButton (= 5.25.0)
40 | - MLUI/MLCheckBox (= 5.25.0)
41 | - MLUI/MLColorPalette (= 5.25.0)
42 | - MLUI/MLContextualMenu (= 5.25.0)
43 | - MLUI/MLFonts (= 5.25.0)
44 | - MLUI/MLFullscreenModal (= 5.25.0)
45 | - MLUI/MLGenericErrorView (= 5.25.0)
46 | - MLUI/MLHeader (= 5.25.0)
47 | - MLUI/MLHtml (= 5.25.0)
48 | - MLUI/MLModal (= 5.25.0)
49 | - MLUI/MLRadioButton (= 5.25.0)
50 | - MLUI/MLSnackBar (= 5.25.0)
51 | - MLUI/MLSpacing (= 5.25.0)
52 | - MLUI/MLSpinner (= 5.25.0)
53 | - MLUI/MLSwitch (= 5.25.0)
54 | - MLUI/MLTextView (= 5.25.0)
55 | - MLUI/MLTitledMultiLineTextField (= 5.25.0)
56 | - MLUI/MLTitledSingleLineTextField (= 5.25.0)
57 | - MLUI/PriceView (= 5.25.0)
58 | - MLUI/SnackBarView (= 5.25.0)
59 | - MLUI/StyleSheet (= 5.25.0)
60 | - MLUI/ActionButton (5.25.0):
61 | - MLUI/Core
62 | - MLUI/Core (5.25.0):
63 | - MLUI/MLFonts
64 | - MLUI/Helpers (5.25.0)
65 | - MLUI/MLButton (5.25.0):
66 | - MLUI/Core
67 | - MLUI/MLColorPalette
68 | - MLUI/MLFonts
69 | - MLUI/MLSpinner
70 | - MLUI/StyleSheet
71 | - MLUI/MLCheckBox (5.25.0):
72 | - MLUI/MLColorPalette
73 | - MLUI/StyleSheet
74 | - MLUI/MLColorPalette (5.25.0)
75 | - MLUI/MLContextualMenu (5.25.0):
76 | - MLUI/MLColorPalette
77 | - MLUI/MLFonts
78 | - MLUI/MLFonts (5.25.0):
79 | - JRSwizzle (= 1.0)
80 | - MLUI/Helpers
81 | - MLUI/StyleSheet
82 | - MLUI/MLFullscreenModal (5.25.0):
83 | - FXBlurView (~> 1.6)
84 | - MLUI/Core
85 | - MLUI/MLButton
86 | - MLUI/MLColorPalette
87 | - MLUI/MLFonts
88 | - MLUI/MLHeader
89 | - MLUI/StyleSheet
90 | - MLUI/MLGenericErrorView (5.25.0):
91 | - MLUI/MLButton
92 | - MLUI/MLColorPalette
93 | - MLUI/MLSpacing
94 | - MLUI/MLHeader (5.25.0):
95 | - MLUI/MLColorPalette
96 | - MLUI/StyleSheet
97 | - MLUI/MLHtml (5.25.0):
98 | - MLUI/MLFonts
99 | - MLUI/MLModal (5.25.0):
100 | - FXBlurView (~> 1.6)
101 | - MLUI/Core
102 | - MLUI/MLButton
103 | - MLUI/MLColorPalette
104 | - MLUI/MLFonts
105 | - MLUI/StyleSheet
106 | - MLUI/MLRadioButton (5.25.0):
107 | - MLUI/StyleSheet
108 | - MLUI/MLSnackBar (5.25.0):
109 | - MLUI/Helpers
110 | - MLUI/MLButton
111 | - MLUI/MLColorPalette
112 | - MLUI/MLFonts
113 | - MLUI/MLSpacing (5.25.0):
114 | - JRSwizzle (= 1.0)
115 | - MLUI/MLFonts
116 | - MLUI/MLSpinner (5.25.0):
117 | - MLUI/MLColorPalette
118 | - MLUI/MLFonts
119 | - MLUI/StyleSheet
120 | - MLUI/MLSwitch (5.25.0):
121 | - MLUI/Helpers
122 | - MLUI/MLColorPalette
123 | - MLUI/MLTextView (5.25.0):
124 | - MLUI/MLColorPalette
125 | - MLUI/MLFonts
126 | - MLUI/MLTitledMultiLineTextField (5.25.0):
127 | - MLUI/MLColorPalette
128 | - MLUI/MLFonts
129 | - MLUI/MLTitledSingleLineTextField
130 | - MLUI/StyleSheet
131 | - MLUI/MLTitledSingleLineTextField (5.25.0):
132 | - MLUI/MLColorPalette
133 | - MLUI/MLFonts
134 | - MLUI/StyleSheet
135 | - MLUI/PriceView (5.25.0):
136 | - MLUI/Core
137 | - MLUI/MLFonts
138 | - MLUI/SnackBarView (5.25.0):
139 | - MLUI/Helpers
140 | - MLUI/MLFonts
141 | - MLUI/StyleSheet (5.25.0)
142 |
143 | DEPENDENCIES:
144 | - Flutter (from `Flutter`)
145 | - mercado_pago_mobile_checkout (from `.symlinks/plugins/mercado_pago_mobile_checkout/ios`)
146 |
147 | SPEC REPOS:
148 | trunk:
149 | - FXBlurView
150 | - JRSwizzle
151 | - MercadoPagoSDK
152 | - MLBusinessComponents
153 | - MLCardDrawer
154 | - MLCardForm
155 | - MLUI
156 |
157 | EXTERNAL SOURCES:
158 | Flutter:
159 | :path: Flutter
160 | mercado_pago_mobile_checkout:
161 | :path: ".symlinks/plugins/mercado_pago_mobile_checkout/ios"
162 |
163 | SPEC CHECKSUMS:
164 | Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
165 | FXBlurView: db786c2561cb49a09ae98407f52460096ab8a44f
166 | JRSwizzle: dd5ead5d913a0f29e7f558200165849f006bb1e3
167 | mercado_pago_mobile_checkout: fd78f498e81fa25997c13007bae791614f953dd3
168 | MercadoPagoSDK: 634fc8a9fe7f99f4d73506659c68cdbb885407fc
169 | MLBusinessComponents: fd4e20fa87f5970eed7eead5e6901ddb781c11fd
170 | MLCardDrawer: 2ae367238699c790a143b14c8280ad75495f6fee
171 | MLCardForm: 150fe3caf0f986340431f3e8d863b771ee2dfab1
172 | MLUI: db4e5bb3aae6884212dcf1213d76b65c5cd26464
173 |
174 | PODFILE CHECKSUM: b7a833ad079227ba0be5d9ded188e5d92916dc28
175 |
176 | COCOAPODS: 1.11.3
177 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 3D8628C56811B5BF1828191F /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEC2F34D6FE335818BAE8762 /* libPods-Runner.a */; };
13 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
14 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
15 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
16 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
17 | /* End PBXBuildFile section */
18 |
19 | /* Begin PBXCopyFilesBuildPhase section */
20 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
21 | isa = PBXCopyFilesBuildPhase;
22 | buildActionMask = 2147483647;
23 | dstPath = "";
24 | dstSubfolderSpec = 10;
25 | files = (
26 | );
27 | name = "Embed Frameworks";
28 | runOnlyForDeploymentPostprocessing = 0;
29 | };
30 | /* End PBXCopyFilesBuildPhase section */
31 |
32 | /* Begin PBXFileReference section */
33 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
34 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
35 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
36 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
37 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
38 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
39 | 8FE2BD47C34E2CEF475665C8 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
40 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
41 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
42 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
43 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
44 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
45 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
46 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
47 | AEC2F34D6FE335818BAE8762 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
48 | CBDDAB0BA5054EC096344B3A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
49 | F95D2D4587F2836745F0EC0B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
50 | /* End PBXFileReference section */
51 |
52 | /* Begin PBXFrameworksBuildPhase section */
53 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
54 | isa = PBXFrameworksBuildPhase;
55 | buildActionMask = 2147483647;
56 | files = (
57 | 3D8628C56811B5BF1828191F /* libPods-Runner.a in Frameworks */,
58 | );
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | /* End PBXFrameworksBuildPhase section */
62 |
63 | /* Begin PBXGroup section */
64 | 319D4E25F48F7E5496AABE39 /* Frameworks */ = {
65 | isa = PBXGroup;
66 | children = (
67 | AEC2F34D6FE335818BAE8762 /* libPods-Runner.a */,
68 | );
69 | name = Frameworks;
70 | sourceTree = "";
71 | };
72 | 9740EEB11CF90186004384FC /* Flutter */ = {
73 | isa = PBXGroup;
74 | children = (
75 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
76 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
77 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
78 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
79 | );
80 | name = Flutter;
81 | sourceTree = "";
82 | };
83 | 97C146E51CF9000F007C117D = {
84 | isa = PBXGroup;
85 | children = (
86 | 9740EEB11CF90186004384FC /* Flutter */,
87 | 97C146F01CF9000F007C117D /* Runner */,
88 | 97C146EF1CF9000F007C117D /* Products */,
89 | A71336C83EEE183787570C6D /* Pods */,
90 | 319D4E25F48F7E5496AABE39 /* Frameworks */,
91 | );
92 | sourceTree = "";
93 | };
94 | 97C146EF1CF9000F007C117D /* Products */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 97C146EE1CF9000F007C117D /* Runner.app */,
98 | );
99 | name = Products;
100 | sourceTree = "";
101 | };
102 | 97C146F01CF9000F007C117D /* Runner */ = {
103 | isa = PBXGroup;
104 | children = (
105 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
106 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
107 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
108 | 97C147021CF9000F007C117D /* Info.plist */,
109 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
110 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
111 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
112 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
113 | );
114 | path = Runner;
115 | sourceTree = "";
116 | };
117 | A71336C83EEE183787570C6D /* Pods */ = {
118 | isa = PBXGroup;
119 | children = (
120 | CBDDAB0BA5054EC096344B3A /* Pods-Runner.debug.xcconfig */,
121 | F95D2D4587F2836745F0EC0B /* Pods-Runner.release.xcconfig */,
122 | 8FE2BD47C34E2CEF475665C8 /* Pods-Runner.profile.xcconfig */,
123 | );
124 | name = Pods;
125 | path = Pods;
126 | sourceTree = "";
127 | };
128 | /* End PBXGroup section */
129 |
130 | /* Begin PBXNativeTarget section */
131 | 97C146ED1CF9000F007C117D /* Runner */ = {
132 | isa = PBXNativeTarget;
133 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
134 | buildPhases = (
135 | 8C7C9F4306871AA6F01186EE /* [CP] Check Pods Manifest.lock */,
136 | 9740EEB61CF901F6004384FC /* Run Script */,
137 | 97C146EA1CF9000F007C117D /* Sources */,
138 | 97C146EB1CF9000F007C117D /* Frameworks */,
139 | 97C146EC1CF9000F007C117D /* Resources */,
140 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
141 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
142 | BCC26FE3B79F3302A8331B81 /* [CP] Copy Pods Resources */,
143 | );
144 | buildRules = (
145 | );
146 | dependencies = (
147 | );
148 | name = Runner;
149 | productName = Runner;
150 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
151 | productType = "com.apple.product-type.application";
152 | };
153 | /* End PBXNativeTarget section */
154 |
155 | /* Begin PBXProject section */
156 | 97C146E61CF9000F007C117D /* Project object */ = {
157 | isa = PBXProject;
158 | attributes = {
159 | LastUpgradeCheck = 1300;
160 | ORGANIZATIONNAME = "";
161 | TargetAttributes = {
162 | 97C146ED1CF9000F007C117D = {
163 | CreatedOnToolsVersion = 7.3.1;
164 | LastSwiftMigration = 1100;
165 | };
166 | };
167 | };
168 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
169 | compatibilityVersion = "Xcode 9.3";
170 | developmentRegion = en;
171 | hasScannedForEncodings = 0;
172 | knownRegions = (
173 | en,
174 | Base,
175 | );
176 | mainGroup = 97C146E51CF9000F007C117D;
177 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
178 | projectDirPath = "";
179 | projectRoot = "";
180 | targets = (
181 | 97C146ED1CF9000F007C117D /* Runner */,
182 | );
183 | };
184 | /* End PBXProject section */
185 |
186 | /* Begin PBXResourcesBuildPhase section */
187 | 97C146EC1CF9000F007C117D /* Resources */ = {
188 | isa = PBXResourcesBuildPhase;
189 | buildActionMask = 2147483647;
190 | files = (
191 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
192 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
193 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
194 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
195 | );
196 | runOnlyForDeploymentPostprocessing = 0;
197 | };
198 | /* End PBXResourcesBuildPhase section */
199 |
200 | /* Begin PBXShellScriptBuildPhase section */
201 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
202 | isa = PBXShellScriptBuildPhase;
203 | buildActionMask = 2147483647;
204 | files = (
205 | );
206 | inputPaths = (
207 | );
208 | name = "Thin Binary";
209 | outputPaths = (
210 | );
211 | runOnlyForDeploymentPostprocessing = 0;
212 | shellPath = /bin/sh;
213 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
214 | };
215 | 8C7C9F4306871AA6F01186EE /* [CP] Check Pods Manifest.lock */ = {
216 | isa = PBXShellScriptBuildPhase;
217 | buildActionMask = 2147483647;
218 | files = (
219 | );
220 | inputFileListPaths = (
221 | );
222 | inputPaths = (
223 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
224 | "${PODS_ROOT}/Manifest.lock",
225 | );
226 | name = "[CP] Check Pods Manifest.lock";
227 | outputFileListPaths = (
228 | );
229 | outputPaths = (
230 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
231 | );
232 | runOnlyForDeploymentPostprocessing = 0;
233 | shellPath = /bin/sh;
234 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
235 | showEnvVarsInLog = 0;
236 | };
237 | 9740EEB61CF901F6004384FC /* Run Script */ = {
238 | isa = PBXShellScriptBuildPhase;
239 | buildActionMask = 2147483647;
240 | files = (
241 | );
242 | inputPaths = (
243 | );
244 | name = "Run Script";
245 | outputPaths = (
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | shellPath = /bin/sh;
249 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
250 | };
251 | BCC26FE3B79F3302A8331B81 /* [CP] Copy Pods Resources */ = {
252 | isa = PBXShellScriptBuildPhase;
253 | buildActionMask = 2147483647;
254 | files = (
255 | );
256 | inputFileListPaths = (
257 | );
258 | name = "[CP] Copy Pods Resources";
259 | outputFileListPaths = (
260 | );
261 | runOnlyForDeploymentPostprocessing = 0;
262 | shellPath = /bin/sh;
263 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
264 | showEnvVarsInLog = 0;
265 | };
266 | /* End PBXShellScriptBuildPhase section */
267 |
268 | /* Begin PBXSourcesBuildPhase section */
269 | 97C146EA1CF9000F007C117D /* Sources */ = {
270 | isa = PBXSourcesBuildPhase;
271 | buildActionMask = 2147483647;
272 | files = (
273 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
274 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
275 | );
276 | runOnlyForDeploymentPostprocessing = 0;
277 | };
278 | /* End PBXSourcesBuildPhase section */
279 |
280 | /* Begin PBXVariantGroup section */
281 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
282 | isa = PBXVariantGroup;
283 | children = (
284 | 97C146FB1CF9000F007C117D /* Base */,
285 | );
286 | name = Main.storyboard;
287 | sourceTree = "";
288 | };
289 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
290 | isa = PBXVariantGroup;
291 | children = (
292 | 97C147001CF9000F007C117D /* Base */,
293 | );
294 | name = LaunchScreen.storyboard;
295 | sourceTree = "";
296 | };
297 | /* End PBXVariantGroup section */
298 |
299 | /* Begin XCBuildConfiguration section */
300 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
301 | isa = XCBuildConfiguration;
302 | buildSettings = {
303 | ALWAYS_SEARCH_USER_PATHS = NO;
304 | CLANG_ANALYZER_NONNULL = YES;
305 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
306 | CLANG_CXX_LIBRARY = "libc++";
307 | CLANG_ENABLE_MODULES = YES;
308 | CLANG_ENABLE_OBJC_ARC = YES;
309 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
310 | CLANG_WARN_BOOL_CONVERSION = YES;
311 | CLANG_WARN_COMMA = YES;
312 | CLANG_WARN_CONSTANT_CONVERSION = YES;
313 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
314 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
315 | CLANG_WARN_EMPTY_BODY = YES;
316 | CLANG_WARN_ENUM_CONVERSION = YES;
317 | CLANG_WARN_INFINITE_RECURSION = YES;
318 | CLANG_WARN_INT_CONVERSION = YES;
319 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
320 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
321 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
322 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
323 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
324 | CLANG_WARN_STRICT_PROTOTYPES = YES;
325 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
326 | CLANG_WARN_UNREACHABLE_CODE = YES;
327 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
328 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
329 | COPY_PHASE_STRIP = NO;
330 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
331 | ENABLE_NS_ASSERTIONS = NO;
332 | ENABLE_STRICT_OBJC_MSGSEND = YES;
333 | GCC_C_LANGUAGE_STANDARD = gnu99;
334 | GCC_NO_COMMON_BLOCKS = YES;
335 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
336 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
337 | GCC_WARN_UNDECLARED_SELECTOR = YES;
338 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
339 | GCC_WARN_UNUSED_FUNCTION = YES;
340 | GCC_WARN_UNUSED_VARIABLE = YES;
341 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
342 | MTL_ENABLE_DEBUG_INFO = NO;
343 | SDKROOT = iphoneos;
344 | SUPPORTED_PLATFORMS = iphoneos;
345 | TARGETED_DEVICE_FAMILY = "1,2";
346 | VALIDATE_PRODUCT = YES;
347 | };
348 | name = Profile;
349 | };
350 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
351 | isa = XCBuildConfiguration;
352 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
353 | buildSettings = {
354 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
355 | CLANG_ENABLE_MODULES = YES;
356 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
357 | ENABLE_BITCODE = NO;
358 | INFOPLIST_FILE = Runner/Info.plist;
359 | LD_RUNPATH_SEARCH_PATHS = (
360 | "$(inherited)",
361 | "@executable_path/Frameworks",
362 | );
363 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
364 | PRODUCT_NAME = "$(TARGET_NAME)";
365 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
366 | SWIFT_VERSION = 5.0;
367 | VERSIONING_SYSTEM = "apple-generic";
368 | };
369 | name = Profile;
370 | };
371 | 97C147031CF9000F007C117D /* Debug */ = {
372 | isa = XCBuildConfiguration;
373 | buildSettings = {
374 | ALWAYS_SEARCH_USER_PATHS = NO;
375 | CLANG_ANALYZER_NONNULL = YES;
376 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
377 | CLANG_CXX_LIBRARY = "libc++";
378 | CLANG_ENABLE_MODULES = YES;
379 | CLANG_ENABLE_OBJC_ARC = YES;
380 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
381 | CLANG_WARN_BOOL_CONVERSION = YES;
382 | CLANG_WARN_COMMA = YES;
383 | CLANG_WARN_CONSTANT_CONVERSION = YES;
384 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
385 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
386 | CLANG_WARN_EMPTY_BODY = YES;
387 | CLANG_WARN_ENUM_CONVERSION = YES;
388 | CLANG_WARN_INFINITE_RECURSION = YES;
389 | CLANG_WARN_INT_CONVERSION = YES;
390 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
391 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
392 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
393 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
394 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
395 | CLANG_WARN_STRICT_PROTOTYPES = YES;
396 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
397 | CLANG_WARN_UNREACHABLE_CODE = YES;
398 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
399 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
400 | COPY_PHASE_STRIP = NO;
401 | DEBUG_INFORMATION_FORMAT = dwarf;
402 | ENABLE_STRICT_OBJC_MSGSEND = YES;
403 | ENABLE_TESTABILITY = YES;
404 | GCC_C_LANGUAGE_STANDARD = gnu99;
405 | GCC_DYNAMIC_NO_PIC = NO;
406 | GCC_NO_COMMON_BLOCKS = YES;
407 | GCC_OPTIMIZATION_LEVEL = 0;
408 | GCC_PREPROCESSOR_DEFINITIONS = (
409 | "DEBUG=1",
410 | "$(inherited)",
411 | );
412 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
413 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
414 | GCC_WARN_UNDECLARED_SELECTOR = YES;
415 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
416 | GCC_WARN_UNUSED_FUNCTION = YES;
417 | GCC_WARN_UNUSED_VARIABLE = YES;
418 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
419 | MTL_ENABLE_DEBUG_INFO = YES;
420 | ONLY_ACTIVE_ARCH = YES;
421 | SDKROOT = iphoneos;
422 | TARGETED_DEVICE_FAMILY = "1,2";
423 | };
424 | name = Debug;
425 | };
426 | 97C147041CF9000F007C117D /* Release */ = {
427 | isa = XCBuildConfiguration;
428 | buildSettings = {
429 | ALWAYS_SEARCH_USER_PATHS = NO;
430 | CLANG_ANALYZER_NONNULL = YES;
431 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
432 | CLANG_CXX_LIBRARY = "libc++";
433 | CLANG_ENABLE_MODULES = YES;
434 | CLANG_ENABLE_OBJC_ARC = YES;
435 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
436 | CLANG_WARN_BOOL_CONVERSION = YES;
437 | CLANG_WARN_COMMA = YES;
438 | CLANG_WARN_CONSTANT_CONVERSION = YES;
439 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
440 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
441 | CLANG_WARN_EMPTY_BODY = YES;
442 | CLANG_WARN_ENUM_CONVERSION = YES;
443 | CLANG_WARN_INFINITE_RECURSION = YES;
444 | CLANG_WARN_INT_CONVERSION = YES;
445 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
446 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
447 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
448 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
449 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
450 | CLANG_WARN_STRICT_PROTOTYPES = YES;
451 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
452 | CLANG_WARN_UNREACHABLE_CODE = YES;
453 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
454 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
455 | COPY_PHASE_STRIP = NO;
456 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
457 | ENABLE_NS_ASSERTIONS = NO;
458 | ENABLE_STRICT_OBJC_MSGSEND = YES;
459 | GCC_C_LANGUAGE_STANDARD = gnu99;
460 | GCC_NO_COMMON_BLOCKS = YES;
461 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
462 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
463 | GCC_WARN_UNDECLARED_SELECTOR = YES;
464 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
465 | GCC_WARN_UNUSED_FUNCTION = YES;
466 | GCC_WARN_UNUSED_VARIABLE = YES;
467 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
468 | MTL_ENABLE_DEBUG_INFO = NO;
469 | SDKROOT = iphoneos;
470 | SUPPORTED_PLATFORMS = iphoneos;
471 | SWIFT_COMPILATION_MODE = wholemodule;
472 | SWIFT_OPTIMIZATION_LEVEL = "-O";
473 | TARGETED_DEVICE_FAMILY = "1,2";
474 | VALIDATE_PRODUCT = YES;
475 | };
476 | name = Release;
477 | };
478 | 97C147061CF9000F007C117D /* Debug */ = {
479 | isa = XCBuildConfiguration;
480 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
481 | buildSettings = {
482 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
483 | CLANG_ENABLE_MODULES = YES;
484 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
485 | ENABLE_BITCODE = NO;
486 | INFOPLIST_FILE = Runner/Info.plist;
487 | LD_RUNPATH_SEARCH_PATHS = (
488 | "$(inherited)",
489 | "@executable_path/Frameworks",
490 | );
491 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
492 | PRODUCT_NAME = "$(TARGET_NAME)";
493 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
494 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
495 | SWIFT_VERSION = 5.0;
496 | VERSIONING_SYSTEM = "apple-generic";
497 | };
498 | name = Debug;
499 | };
500 | 97C147071CF9000F007C117D /* Release */ = {
501 | isa = XCBuildConfiguration;
502 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
503 | buildSettings = {
504 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
505 | CLANG_ENABLE_MODULES = YES;
506 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
507 | ENABLE_BITCODE = NO;
508 | INFOPLIST_FILE = Runner/Info.plist;
509 | LD_RUNPATH_SEARCH_PATHS = (
510 | "$(inherited)",
511 | "@executable_path/Frameworks",
512 | );
513 | PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
514 | PRODUCT_NAME = "$(TARGET_NAME)";
515 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
516 | SWIFT_VERSION = 5.0;
517 | VERSIONING_SYSTEM = "apple-generic";
518 | };
519 | name = Release;
520 | };
521 | /* End XCBuildConfiguration section */
522 |
523 | /* Begin XCConfigurationList section */
524 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
525 | isa = XCConfigurationList;
526 | buildConfigurations = (
527 | 97C147031CF9000F007C117D /* Debug */,
528 | 97C147041CF9000F007C117D /* Release */,
529 | 249021D3217E4FDB00AE95B9 /* Profile */,
530 | );
531 | defaultConfigurationIsVisible = 0;
532 | defaultConfigurationName = Release;
533 | };
534 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
535 | isa = XCConfigurationList;
536 | buildConfigurations = (
537 | 97C147061CF9000F007C117D /* Debug */,
538 | 97C147071CF9000F007C117D /* Release */,
539 | 249021D4217E4FDB00AE95B9 /* Profile */,
540 | );
541 | defaultConfigurationIsVisible = 0;
542 | defaultConfigurationName = Release;
543 | };
544 | /* End XCConfigurationList section */
545 | };
546 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
547 | }
548 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | var navigationController: UINavigationController?;
7 |
8 | override func application(
9 | _ application: UIApplication,
10 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
11 | ) -> Bool {
12 | let flutterViewController: FlutterViewController = window?.rootViewController as! FlutterViewController
13 |
14 | GeneratedPluginRegistrant.register(with: self)
15 |
16 | // Add these lines after GeneratedPluginRegistrant
17 | self.navigationController = UINavigationController(rootViewController: flutterViewController);
18 | self.navigationController?.setNavigationBarHidden(true, animated: false);
19 |
20 | self.window = UIWindow(frame: UIScreen.main.bounds);
21 | self.window.rootViewController = self.navigationController;
22 | self.window.makeKeyAndVisible();
23 |
24 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/example/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Example
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | mercado_pago_mobile_checkout_example
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 | UIViewControllerBasedStatusBarAppearance
45 |
46 | CADisableMinimumFrameDurationOnPhone
47 |
48 |
49 |
--------------------------------------------------------------------------------
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/example/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter/services.dart';
5 | import 'package:mercado_pago_mobile_checkout/mercado_pago_mobile_checkout.dart';
6 |
7 | void main() => runApp(MyApp());
8 |
9 | // Get your app public from the credentials pages:
10 | // https://www.mercadopago.com/mla/account/credentials
11 | const publicKey = "YOUR KEY";
12 |
13 | // The preferenceId should be fetch from your backend server. Do not
14 | // expose your Access Token. Also you can create a preference using
15 | // curl:
16 | // ```bash
17 | // curl -X POST \
18 | // 'https://api.mercadopago.com/checkout/preferences?access_token=ACCESS_TOKEN' \
19 | // -H 'Content-Type: application/json' \
20 | // -d '{
21 | // "items": [
22 | // {
23 | // "title": "Dummy Item",
24 | // "description": "Multicolor Item",
25 | // "quantity": 1,
26 | // "currency_id": "ARS",
27 | // "unit_price": 10.0
28 | // }
29 | // ],
30 | // "payer": {
31 | // "email": "payer@email.com"
32 | // }
33 | // }'
34 | // ```
35 | const preferenceId = "YOUR ID";
36 |
37 | class MyApp extends StatefulWidget {
38 | @override
39 | _MyAppState createState() => _MyAppState();
40 | }
41 |
42 | class _MyAppState extends State {
43 | String _platformVersion = 'Unknown';
44 |
45 | @override
46 | void initState() {
47 | super.initState();
48 | initPlatformState();
49 | }
50 |
51 | // Platform messages are asynchronous, so we initialize in an async method.
52 | Future initPlatformState() async {
53 | String platformVersion;
54 | // Platform messages may fail, so we use a try/catch PlatformException.
55 | try {
56 | platformVersion = await MercadoPagoMobileCheckout.platformVersion;
57 | } on PlatformException {
58 | platformVersion = 'Failed to get platform version.';
59 | }
60 |
61 | // If the widget was removed from the tree while the asynchronous platform
62 | // message was in flight, we want to discard the reply rather than calling
63 | // setState to update our non-existent appearance.
64 | if (!mounted) return;
65 |
66 | setState(() {
67 | _platformVersion = platformVersion;
68 | });
69 | }
70 |
71 | @override
72 | Widget build(BuildContext context) {
73 | return MaterialApp(
74 | home: Scaffold(
75 | appBar: AppBar(
76 | title: const Text('Plugin example app'),
77 | ),
78 | body: Center(
79 | child: Column(
80 | children: [
81 | Text('Running on: $_platformVersion\n'),
82 | ElevatedButton(
83 | onPressed: () async {
84 | PaymentResult result =
85 | await MercadoPagoMobileCheckout.startCheckout(
86 | publicKey,
87 | preferenceId,
88 | );
89 | print(result.toString());
90 | },
91 | child: Text("Pagar"),
92 | ),
93 | ],
94 | ),
95 | ),
96 | ),
97 | );
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/example/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.9.0"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "2.1.0"
18 | characters:
19 | dependency: transitive
20 | description:
21 | name: characters
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "1.2.1"
25 | clock:
26 | dependency: transitive
27 | description:
28 | name: clock
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.1.1"
32 | collection:
33 | dependency: transitive
34 | description:
35 | name: collection
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.16.0"
39 | cupertino_icons:
40 | dependency: "direct main"
41 | description:
42 | name: cupertino_icons
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "1.0.5"
46 | fake_async:
47 | dependency: transitive
48 | description:
49 | name: fake_async
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "1.3.1"
53 | flutter:
54 | dependency: "direct main"
55 | description: flutter
56 | source: sdk
57 | version: "0.0.0"
58 | flutter_test:
59 | dependency: "direct dev"
60 | description: flutter
61 | source: sdk
62 | version: "0.0.0"
63 | freezed_annotation:
64 | dependency: transitive
65 | description:
66 | name: freezed_annotation
67 | url: "https://pub.dartlang.org"
68 | source: hosted
69 | version: "2.2.0"
70 | json_annotation:
71 | dependency: transitive
72 | description:
73 | name: json_annotation
74 | url: "https://pub.dartlang.org"
75 | source: hosted
76 | version: "4.8.0"
77 | matcher:
78 | dependency: transitive
79 | description:
80 | name: matcher
81 | url: "https://pub.dartlang.org"
82 | source: hosted
83 | version: "0.12.12"
84 | material_color_utilities:
85 | dependency: transitive
86 | description:
87 | name: material_color_utilities
88 | url: "https://pub.dartlang.org"
89 | source: hosted
90 | version: "0.1.5"
91 | mercado_pago_mobile_checkout:
92 | dependency: "direct main"
93 | description:
94 | path: ".."
95 | relative: true
96 | source: path
97 | version: "0.2.0-dev.4"
98 | meta:
99 | dependency: transitive
100 | description:
101 | name: meta
102 | url: "https://pub.dartlang.org"
103 | source: hosted
104 | version: "1.8.0"
105 | path:
106 | dependency: transitive
107 | description:
108 | name: path
109 | url: "https://pub.dartlang.org"
110 | source: hosted
111 | version: "1.8.2"
112 | sky_engine:
113 | dependency: transitive
114 | description: flutter
115 | source: sdk
116 | version: "0.0.99"
117 | source_span:
118 | dependency: transitive
119 | description:
120 | name: source_span
121 | url: "https://pub.dartlang.org"
122 | source: hosted
123 | version: "1.9.0"
124 | stack_trace:
125 | dependency: transitive
126 | description:
127 | name: stack_trace
128 | url: "https://pub.dartlang.org"
129 | source: hosted
130 | version: "1.10.0"
131 | stream_channel:
132 | dependency: transitive
133 | description:
134 | name: stream_channel
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "2.1.0"
138 | string_scanner:
139 | dependency: transitive
140 | description:
141 | name: string_scanner
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "1.1.1"
145 | term_glyph:
146 | dependency: transitive
147 | description:
148 | name: term_glyph
149 | url: "https://pub.dartlang.org"
150 | source: hosted
151 | version: "1.2.1"
152 | test_api:
153 | dependency: transitive
154 | description:
155 | name: test_api
156 | url: "https://pub.dartlang.org"
157 | source: hosted
158 | version: "0.4.12"
159 | vector_math:
160 | dependency: transitive
161 | description:
162 | name: vector_math
163 | url: "https://pub.dartlang.org"
164 | source: hosted
165 | version: "2.1.2"
166 | sdks:
167 | dart: ">=2.18.0 <3.0.0"
168 | flutter: ">=1.12.13+hotfix.6"
169 |
--------------------------------------------------------------------------------
/example/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: mercado_pago_mobile_checkout_example
2 | description: Demonstrates how to use the mercado_pago_mobile_checkout plugin.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `pub publish`. This is preferred for private packages.
6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 | mercado_pago_mobile_checkout:
27 | path: ../
28 |
29 | # The following adds the Cupertino Icons font to your application.
30 | # Use with the CupertinoIcons class for iOS style icons.
31 | cupertino_icons: ^1.0.0
32 |
33 | dev_dependencies:
34 | flutter_test:
35 | sdk: flutter
36 |
37 | # For information on the generic Dart part of this file, see the
38 | # following page: https://dart.dev/tools/pub/pubspec
39 |
40 | # The following section is specific to Flutter.
41 | flutter:
42 |
43 | # The following line ensures that the Material Icons font is
44 | # included with your application, so that you can use the icons in
45 | # the material Icons class.
46 | uses-material-design: true
47 |
48 | # To add assets to your application, add an assets section, like this:
49 | # assets:
50 | # - images/a_dot_burr.jpeg
51 | # - images/a_dot_ham.jpeg
52 |
53 | # An image asset can refer to one or more resolution-specific "variants", see
54 | # https://flutter.dev/assets-and-images/#resolution-aware.
55 |
56 | # For details regarding adding assets from package dependencies, see
57 | # https://flutter.dev/assets-and-images/#from-packages
58 |
59 | # To add custom fonts to your application, add a fonts section here,
60 | # in this "flutter" section. Each entry in this list should have a
61 | # "family" key with the font family name, and a "fonts" key with a
62 | # list giving the asset and other descriptors for the font. For
63 | # example:
64 | # fonts:
65 | # - family: Schyler
66 | # fonts:
67 | # - asset: fonts/Schyler-Regular.ttf
68 | # - asset: fonts/Schyler-Italic.ttf
69 | # style: italic
70 | # - family: Trajan Pro
71 | # fonts:
72 | # - asset: fonts/TrajanPro.ttf
73 | # - asset: fonts/TrajanPro_Bold.ttf
74 | # weight: 700
75 | #
76 | # For details regarding fonts from package dependencies,
77 | # see https://flutter.dev/custom-fonts/#from-packages
--------------------------------------------------------------------------------
/example/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility that Flutter provides. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_test/flutter_test.dart';
10 |
11 | import 'package:mercado_pago_mobile_checkout_example/main.dart';
12 |
13 | void main() {
14 | testWidgets('Verify Platform version', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(MyApp());
17 |
18 | // Verify that platform version is retrieved.
19 | expect(
20 | find.byWidgetPredicate(
21 | (Widget widget) => widget is Text &&
22 | widget.data.startsWith('Running on:'),
23 | ),
24 | findsOneWidget,
25 | );
26 | });
27 | }
28 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .vagrant/
3 | .sconsign.dblite
4 | .svn/
5 |
6 | .DS_Store
7 | *.swp
8 | profile
9 |
10 | DerivedData/
11 | build/
12 | GeneratedPluginRegistrant.h
13 | GeneratedPluginRegistrant.m
14 |
15 | .generated/
16 |
17 | *.pbxuser
18 | *.mode1v3
19 | *.mode2v3
20 | *.perspectivev3
21 |
22 | !default.pbxuser
23 | !default.mode1v3
24 | !default.mode2v3
25 | !default.perspectivev3
26 |
27 | xcuserdata
28 |
29 | *.moved-aside
30 |
31 | *.pyc
32 | *sync/
33 | Icon?
34 | .tags*
35 |
36 | /Flutter/Generated.xcconfig
37 | /Flutter/flutter_export_environment.sh
--------------------------------------------------------------------------------
/ios/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Gazer/px-flutter/413a6a165fef372a13931575c9778d74ae75d4f2/ios/Assets/.gitkeep
--------------------------------------------------------------------------------
/ios/Classes/MercadoPagoMobileCheckoutPlugin.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | @interface MercadoPagoMobileCheckoutPlugin : NSObject
4 | @end
5 |
--------------------------------------------------------------------------------
/ios/Classes/MercadoPagoMobileCheckoutPlugin.m:
--------------------------------------------------------------------------------
1 | #import "MercadoPagoMobileCheckoutPlugin.h"
2 | #if __has_include()
3 | #import
4 | #else
5 | // Support project import fallback if the generated compatibility header
6 | // is not copied when this plugin is created as a library.
7 | // https://forums.swift.org/t/swift-static-libraries-dont-copy-generated-objective-c-header/19816
8 | #import "mercado_pago_mobile_checkout-Swift.h"
9 | #endif
10 |
11 | @implementation MercadoPagoMobileCheckoutPlugin
12 | + (void)registerWithRegistrar:(NSObject*)registrar {
13 | [SwiftMercadoPagoMobileCheckoutPlugin registerWithRegistrar:registrar];
14 | }
15 | @end
16 |
--------------------------------------------------------------------------------
/ios/Classes/SwiftMercadoPagoMobileCheckoutPlugin.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import MercadoPagoSDK
4 |
5 | public class SwiftMercadoPagoMobileCheckoutPlugin: NSObject, FlutterPlugin, PXLifeCycleProtocol {
6 |
7 | var pendingResult: FlutterResult?
8 |
9 | public static func register(with registrar: FlutterPluginRegistrar) {
10 | let channel = FlutterMethodChannel(name: "mercado_pago_mobile_checkout", binaryMessenger: registrar.messenger())
11 |
12 | let instance = SwiftMercadoPagoMobileCheckoutPlugin()
13 | registrar.addMethodCallDelegate(instance, channel: channel)
14 | }
15 |
16 | public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
17 | if (call.method == "getPlatformVersion") {
18 | result("iOS " + UIDevice.current.systemVersion)
19 | } else if (call.method == "startCheckout") {
20 | let args = call.arguments as! Dictionary
21 | let publicKey = args["publicKey"] ?? ""
22 | let preferenceId = args["preferenceId"] ?? ""
23 |
24 | pendingResult = result
25 |
26 | startCheckout(publicKey: publicKey, preferenceId: preferenceId)
27 | } else {
28 | handleNavigationBar(isMercadoPagoActive: false)
29 | result(FlutterMethodNotImplemented)
30 | }
31 | }
32 |
33 | private func startCheckout(publicKey: String, preferenceId: String) {
34 | let checkout = MercadoPagoCheckout.init(builder: MercadoPagoCheckoutBuilder.init(publicKey: publicKey, preferenceId: preferenceId))
35 |
36 | handleNavigationBar(isMercadoPagoActive: true)
37 | checkout.start(navigationController: controller(), lifeCycleProtocol: self)
38 | }
39 |
40 | public func cancelCheckout() -> (() -> Void)? {
41 | return {
42 | var resultData : [String : String] = [:]
43 | resultData["result"] = "canceled"
44 | self.pendingResult!(resultData)
45 |
46 | self.handleNavigationBar(isMercadoPagoActive: false)
47 | }
48 | }
49 |
50 |
51 | public func finishCheckout() -> ((PXResult?) -> Void)? {
52 | return ({(_ result: PXResult?) in
53 | var resultData : [String : Any?] = [:]
54 |
55 | if let payment = (result as? PXPayment) {
56 | resultData["result"] = "done"
57 | resultData["status"] = payment.status
58 | resultData["statusDetail"] = payment.statusDetail
59 | resultData["id"] = payment.id
60 | resultData["paymentMethodId"] = payment.paymentMethodId
61 | resultData["paymentTypeId"] = payment.paymentTypeId
62 | resultData["issuerId"] = payment.issuerId
63 | resultData["installments"] = payment.installments
64 | resultData["captured"] = payment.captured
65 | resultData["liveMode"] = payment.liveMode
66 | resultData["transactionAmount"] = String(describing: "\(payment.transactionAmount)")
67 | resultData["transactionDetails"] = payment.transactionDetails
68 | self.pendingResult!(resultData)
69 | } else {
70 | resultData["result"] = "done"
71 | resultData["status"] = result?.getStatus()
72 | resultData["statusDetail"] = result?.getStatusDetail()
73 | resultData["id"] = Int(result?.getPaymentId() ?? "")
74 | self.pendingResult!(resultData)
75 | }
76 |
77 | self.handleNavigationBar(isMercadoPagoActive: false)
78 | })
79 | }
80 |
81 | private func handleNavigationBar(isMercadoPagoActive: Bool) {
82 | if (isMercadoPagoActive) {
83 | controller().navigationBar.isHidden = false
84 | } else {
85 | controller().popToRootViewController(animated: true)
86 | controller().navigationBar.isHidden = true
87 | }
88 | }
89 |
90 | private func controller() -> UINavigationController {
91 | let rootViewController = UIApplication.shared.keyWindow?.rootViewController
92 | return rootViewController as! UINavigationController
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/ios/mercado_pago_mobile_checkout.podspec:
--------------------------------------------------------------------------------
1 | #
2 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
3 | # Run `pod lib lint mercado_pago_mobile_checkout.podspec' to validate before publishing.
4 | #
5 | Pod::Spec.new do |s|
6 | s.name = 'mercado_pago_mobile_checkout'
7 | s.version = '0.0.1'
8 | s.summary = 'A new Flutter plugin.'
9 | s.description = <<-DESC
10 | A new Flutter plugin.
11 | DESC
12 | s.homepage = 'http://example.com'
13 | s.license = { :file => '../LICENSE' }
14 | s.author = { 'Your Company' => 'email@example.com' }
15 | s.source = { :path => '.' }
16 | s.source_files = 'Classes/**/*'
17 | s.dependency 'Flutter'
18 | s.dependency 'MercadoPagoSDK', '~> 4.32.4'
19 | # See https://github.com/mercadopago/px-ios/issues/2386
20 | s.dependency 'MLCardForm', '0.9.1'
21 | s.dependency 'MLCardDrawer', '1.5.1'
22 | s.dependency 'MLBusinessComponents', '1.29.0'
23 | s.platform = :ios, '10.0'
24 |
25 | # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
26 | s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
27 | s.swift_version = '4.2'
28 | s.static_framework = true
29 | end
30 |
--------------------------------------------------------------------------------
/lib/mercado_pago_mobile_checkout.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/services.dart';
4 | import 'package:mercado_pago_mobile_checkout/src/payment_result.dart';
5 |
6 | export 'package:mercado_pago_mobile_checkout/src/payment_result.dart';
7 |
8 | class MercadoPagoMobileCheckout {
9 | static const MethodChannel _channel =
10 | const MethodChannel('mercado_pago_mobile_checkout');
11 |
12 | /// Dummy method to test the Platform Channel.
13 | ///
14 | /// You can use this to add the platform used to in the checkout.
15 | static Future get platformVersion async {
16 | final String? version = await _channel.invokeMethod('getPlatformVersion');
17 | return version;
18 | }
19 |
20 | /// Start a checkout for the given preference
21 | ///
22 | /// This method return a PaymentResult with the payment information,
23 | /// if any or the error code.
24 | ///
25 | /// The publicKey should be the key provided by MercadoPago in the App Credentials
26 | /// page. Do not use the Access Token here.
27 | ///
28 | /// The preference ID should be generated in the backend used by your app
29 | /// with all the settings. You can personalize several aspects of the checkout.
30 | /// See
31 | /// for more details.
32 | static Future startCheckout(
33 | String publicKey,
34 | String preferenceId,
35 | ) async {
36 | Map? result =
37 | await (_channel.invokeMapMethod(
38 | 'startCheckout',
39 | {
40 | "publicKey": publicKey,
41 | "preferenceId": preferenceId,
42 | },
43 | ));
44 | return PaymentResult.fromJson(result!);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/src/payment_result.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'payment_result.freezed.dart';
4 | part 'payment_result.g.dart';
5 |
6 | @freezed
7 | abstract class PaymentResult with _$PaymentResult {
8 | const factory PaymentResult(
9 | String result, [
10 | int? id,
11 | String? status,
12 | String? statusDetail,
13 | String? paymentMethodId,
14 | String? paymentTypeId,
15 | String? issuerId,
16 | int? installments,
17 | bool? captured,
18 | bool? liveMode,
19 | String? operationType,
20 | String? transactionAmount,
21 | String? errorMessage,
22 | ]
23 | // TODO: Payer
24 | // TODO: transactionDetails
25 | ) = _PaymentResult;
26 |
27 | factory PaymentResult.fromJson(Map json) =>
28 | _$PaymentResultFromJson(json);
29 | }
30 |
--------------------------------------------------------------------------------
/lib/src/payment_result.freezed.dart:
--------------------------------------------------------------------------------
1 | // coverage:ignore-file
2 | // GENERATED CODE - DO NOT MODIFY BY HAND
3 | // ignore_for_file: type=lint
4 | // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
5 |
6 | part of 'payment_result.dart';
7 |
8 | // **************************************************************************
9 | // FreezedGenerator
10 | // **************************************************************************
11 |
12 | T _$identity(T value) => value;
13 |
14 | final _privateConstructorUsedError = UnsupportedError(
15 | 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods');
16 |
17 | PaymentResult _$PaymentResultFromJson(Map json) {
18 | return _PaymentResult.fromJson(json);
19 | }
20 |
21 | /// @nodoc
22 | mixin _$PaymentResult {
23 | String get result => throw _privateConstructorUsedError;
24 | int? get id => throw _privateConstructorUsedError;
25 | String? get status => throw _privateConstructorUsedError;
26 | String? get statusDetail => throw _privateConstructorUsedError;
27 | String? get paymentMethodId => throw _privateConstructorUsedError;
28 | String? get paymentTypeId => throw _privateConstructorUsedError;
29 | String? get issuerId => throw _privateConstructorUsedError;
30 | int? get installments => throw _privateConstructorUsedError;
31 | bool? get captured => throw _privateConstructorUsedError;
32 | bool? get liveMode => throw _privateConstructorUsedError;
33 | String? get operationType => throw _privateConstructorUsedError;
34 | String? get transactionAmount => throw _privateConstructorUsedError;
35 | String? get errorMessage => throw _privateConstructorUsedError;
36 |
37 | Map toJson() => throw _privateConstructorUsedError;
38 | @JsonKey(ignore: true)
39 | $PaymentResultCopyWith get copyWith =>
40 | throw _privateConstructorUsedError;
41 | }
42 |
43 | /// @nodoc
44 | abstract class $PaymentResultCopyWith<$Res> {
45 | factory $PaymentResultCopyWith(
46 | PaymentResult value, $Res Function(PaymentResult) then) =
47 | _$PaymentResultCopyWithImpl<$Res, PaymentResult>;
48 | @useResult
49 | $Res call(
50 | {String result,
51 | int? id,
52 | String? status,
53 | String? statusDetail,
54 | String? paymentMethodId,
55 | String? paymentTypeId,
56 | String? issuerId,
57 | int? installments,
58 | bool? captured,
59 | bool? liveMode,
60 | String? operationType,
61 | String? transactionAmount,
62 | String? errorMessage});
63 | }
64 |
65 | /// @nodoc
66 | class _$PaymentResultCopyWithImpl<$Res, $Val extends PaymentResult>
67 | implements $PaymentResultCopyWith<$Res> {
68 | _$PaymentResultCopyWithImpl(this._value, this._then);
69 |
70 | // ignore: unused_field
71 | final $Val _value;
72 | // ignore: unused_field
73 | final $Res Function($Val) _then;
74 |
75 | @pragma('vm:prefer-inline')
76 | @override
77 | $Res call({
78 | Object? result = null,
79 | Object? id = freezed,
80 | Object? status = freezed,
81 | Object? statusDetail = freezed,
82 | Object? paymentMethodId = freezed,
83 | Object? paymentTypeId = freezed,
84 | Object? issuerId = freezed,
85 | Object? installments = freezed,
86 | Object? captured = freezed,
87 | Object? liveMode = freezed,
88 | Object? operationType = freezed,
89 | Object? transactionAmount = freezed,
90 | Object? errorMessage = freezed,
91 | }) {
92 | return _then(_value.copyWith(
93 | result: null == result
94 | ? _value.result
95 | : result // ignore: cast_nullable_to_non_nullable
96 | as String,
97 | id: freezed == id
98 | ? _value.id
99 | : id // ignore: cast_nullable_to_non_nullable
100 | as int?,
101 | status: freezed == status
102 | ? _value.status
103 | : status // ignore: cast_nullable_to_non_nullable
104 | as String?,
105 | statusDetail: freezed == statusDetail
106 | ? _value.statusDetail
107 | : statusDetail // ignore: cast_nullable_to_non_nullable
108 | as String?,
109 | paymentMethodId: freezed == paymentMethodId
110 | ? _value.paymentMethodId
111 | : paymentMethodId // ignore: cast_nullable_to_non_nullable
112 | as String?,
113 | paymentTypeId: freezed == paymentTypeId
114 | ? _value.paymentTypeId
115 | : paymentTypeId // ignore: cast_nullable_to_non_nullable
116 | as String?,
117 | issuerId: freezed == issuerId
118 | ? _value.issuerId
119 | : issuerId // ignore: cast_nullable_to_non_nullable
120 | as String?,
121 | installments: freezed == installments
122 | ? _value.installments
123 | : installments // ignore: cast_nullable_to_non_nullable
124 | as int?,
125 | captured: freezed == captured
126 | ? _value.captured
127 | : captured // ignore: cast_nullable_to_non_nullable
128 | as bool?,
129 | liveMode: freezed == liveMode
130 | ? _value.liveMode
131 | : liveMode // ignore: cast_nullable_to_non_nullable
132 | as bool?,
133 | operationType: freezed == operationType
134 | ? _value.operationType
135 | : operationType // ignore: cast_nullable_to_non_nullable
136 | as String?,
137 | transactionAmount: freezed == transactionAmount
138 | ? _value.transactionAmount
139 | : transactionAmount // ignore: cast_nullable_to_non_nullable
140 | as String?,
141 | errorMessage: freezed == errorMessage
142 | ? _value.errorMessage
143 | : errorMessage // ignore: cast_nullable_to_non_nullable
144 | as String?,
145 | ) as $Val);
146 | }
147 | }
148 |
149 | /// @nodoc
150 | abstract class _$$_PaymentResultCopyWith<$Res>
151 | implements $PaymentResultCopyWith<$Res> {
152 | factory _$$_PaymentResultCopyWith(
153 | _$_PaymentResult value, $Res Function(_$_PaymentResult) then) =
154 | __$$_PaymentResultCopyWithImpl<$Res>;
155 | @override
156 | @useResult
157 | $Res call(
158 | {String result,
159 | int? id,
160 | String? status,
161 | String? statusDetail,
162 | String? paymentMethodId,
163 | String? paymentTypeId,
164 | String? issuerId,
165 | int? installments,
166 | bool? captured,
167 | bool? liveMode,
168 | String? operationType,
169 | String? transactionAmount,
170 | String? errorMessage});
171 | }
172 |
173 | /// @nodoc
174 | class __$$_PaymentResultCopyWithImpl<$Res>
175 | extends _$PaymentResultCopyWithImpl<$Res, _$_PaymentResult>
176 | implements _$$_PaymentResultCopyWith<$Res> {
177 | __$$_PaymentResultCopyWithImpl(
178 | _$_PaymentResult _value, $Res Function(_$_PaymentResult) _then)
179 | : super(_value, _then);
180 |
181 | @pragma('vm:prefer-inline')
182 | @override
183 | $Res call({
184 | Object? result = null,
185 | Object? id = freezed,
186 | Object? status = freezed,
187 | Object? statusDetail = freezed,
188 | Object? paymentMethodId = freezed,
189 | Object? paymentTypeId = freezed,
190 | Object? issuerId = freezed,
191 | Object? installments = freezed,
192 | Object? captured = freezed,
193 | Object? liveMode = freezed,
194 | Object? operationType = freezed,
195 | Object? transactionAmount = freezed,
196 | Object? errorMessage = freezed,
197 | }) {
198 | return _then(_$_PaymentResult(
199 | null == result
200 | ? _value.result
201 | : result // ignore: cast_nullable_to_non_nullable
202 | as String,
203 | freezed == id
204 | ? _value.id
205 | : id // ignore: cast_nullable_to_non_nullable
206 | as int?,
207 | freezed == status
208 | ? _value.status
209 | : status // ignore: cast_nullable_to_non_nullable
210 | as String?,
211 | freezed == statusDetail
212 | ? _value.statusDetail
213 | : statusDetail // ignore: cast_nullable_to_non_nullable
214 | as String?,
215 | freezed == paymentMethodId
216 | ? _value.paymentMethodId
217 | : paymentMethodId // ignore: cast_nullable_to_non_nullable
218 | as String?,
219 | freezed == paymentTypeId
220 | ? _value.paymentTypeId
221 | : paymentTypeId // ignore: cast_nullable_to_non_nullable
222 | as String?,
223 | freezed == issuerId
224 | ? _value.issuerId
225 | : issuerId // ignore: cast_nullable_to_non_nullable
226 | as String?,
227 | freezed == installments
228 | ? _value.installments
229 | : installments // ignore: cast_nullable_to_non_nullable
230 | as int?,
231 | freezed == captured
232 | ? _value.captured
233 | : captured // ignore: cast_nullable_to_non_nullable
234 | as bool?,
235 | freezed == liveMode
236 | ? _value.liveMode
237 | : liveMode // ignore: cast_nullable_to_non_nullable
238 | as bool?,
239 | freezed == operationType
240 | ? _value.operationType
241 | : operationType // ignore: cast_nullable_to_non_nullable
242 | as String?,
243 | freezed == transactionAmount
244 | ? _value.transactionAmount
245 | : transactionAmount // ignore: cast_nullable_to_non_nullable
246 | as String?,
247 | freezed == errorMessage
248 | ? _value.errorMessage
249 | : errorMessage // ignore: cast_nullable_to_non_nullable
250 | as String?,
251 | ));
252 | }
253 | }
254 |
255 | /// @nodoc
256 | @JsonSerializable()
257 | class _$_PaymentResult implements _PaymentResult {
258 | const _$_PaymentResult(this.result,
259 | [this.id,
260 | this.status,
261 | this.statusDetail,
262 | this.paymentMethodId,
263 | this.paymentTypeId,
264 | this.issuerId,
265 | this.installments,
266 | this.captured,
267 | this.liveMode,
268 | this.operationType,
269 | this.transactionAmount,
270 | this.errorMessage]);
271 |
272 | factory _$_PaymentResult.fromJson(Map json) =>
273 | _$$_PaymentResultFromJson(json);
274 |
275 | @override
276 | final String result;
277 | @override
278 | final int? id;
279 | @override
280 | final String? status;
281 | @override
282 | final String? statusDetail;
283 | @override
284 | final String? paymentMethodId;
285 | @override
286 | final String? paymentTypeId;
287 | @override
288 | final String? issuerId;
289 | @override
290 | final int? installments;
291 | @override
292 | final bool? captured;
293 | @override
294 | final bool? liveMode;
295 | @override
296 | final String? operationType;
297 | @override
298 | final String? transactionAmount;
299 | @override
300 | final String? errorMessage;
301 |
302 | @override
303 | String toString() {
304 | return 'PaymentResult(result: $result, id: $id, status: $status, statusDetail: $statusDetail, paymentMethodId: $paymentMethodId, paymentTypeId: $paymentTypeId, issuerId: $issuerId, installments: $installments, captured: $captured, liveMode: $liveMode, operationType: $operationType, transactionAmount: $transactionAmount, errorMessage: $errorMessage)';
305 | }
306 |
307 | @override
308 | bool operator ==(dynamic other) {
309 | return identical(this, other) ||
310 | (other.runtimeType == runtimeType &&
311 | other is _$_PaymentResult &&
312 | (identical(other.result, result) || other.result == result) &&
313 | (identical(other.id, id) || other.id == id) &&
314 | (identical(other.status, status) || other.status == status) &&
315 | (identical(other.statusDetail, statusDetail) ||
316 | other.statusDetail == statusDetail) &&
317 | (identical(other.paymentMethodId, paymentMethodId) ||
318 | other.paymentMethodId == paymentMethodId) &&
319 | (identical(other.paymentTypeId, paymentTypeId) ||
320 | other.paymentTypeId == paymentTypeId) &&
321 | (identical(other.issuerId, issuerId) ||
322 | other.issuerId == issuerId) &&
323 | (identical(other.installments, installments) ||
324 | other.installments == installments) &&
325 | (identical(other.captured, captured) ||
326 | other.captured == captured) &&
327 | (identical(other.liveMode, liveMode) ||
328 | other.liveMode == liveMode) &&
329 | (identical(other.operationType, operationType) ||
330 | other.operationType == operationType) &&
331 | (identical(other.transactionAmount, transactionAmount) ||
332 | other.transactionAmount == transactionAmount) &&
333 | (identical(other.errorMessage, errorMessage) ||
334 | other.errorMessage == errorMessage));
335 | }
336 |
337 | @JsonKey(ignore: true)
338 | @override
339 | int get hashCode => Object.hash(
340 | runtimeType,
341 | result,
342 | id,
343 | status,
344 | statusDetail,
345 | paymentMethodId,
346 | paymentTypeId,
347 | issuerId,
348 | installments,
349 | captured,
350 | liveMode,
351 | operationType,
352 | transactionAmount,
353 | errorMessage);
354 |
355 | @JsonKey(ignore: true)
356 | @override
357 | @pragma('vm:prefer-inline')
358 | _$$_PaymentResultCopyWith<_$_PaymentResult> get copyWith =>
359 | __$$_PaymentResultCopyWithImpl<_$_PaymentResult>(this, _$identity);
360 |
361 | @override
362 | Map toJson() {
363 | return _$$_PaymentResultToJson(
364 | this,
365 | );
366 | }
367 | }
368 |
369 | abstract class _PaymentResult implements PaymentResult {
370 | const factory _PaymentResult(final String result,
371 | [final int? id,
372 | final String? status,
373 | final String? statusDetail,
374 | final String? paymentMethodId,
375 | final String? paymentTypeId,
376 | final String? issuerId,
377 | final int? installments,
378 | final bool? captured,
379 | final bool? liveMode,
380 | final String? operationType,
381 | final String? transactionAmount,
382 | final String? errorMessage]) = _$_PaymentResult;
383 |
384 | factory _PaymentResult.fromJson(Map json) =
385 | _$_PaymentResult.fromJson;
386 |
387 | @override
388 | String get result;
389 | @override
390 | int? get id;
391 | @override
392 | String? get status;
393 | @override
394 | String? get statusDetail;
395 | @override
396 | String? get paymentMethodId;
397 | @override
398 | String? get paymentTypeId;
399 | @override
400 | String? get issuerId;
401 | @override
402 | int? get installments;
403 | @override
404 | bool? get captured;
405 | @override
406 | bool? get liveMode;
407 | @override
408 | String? get operationType;
409 | @override
410 | String? get transactionAmount;
411 | @override
412 | String? get errorMessage;
413 | @override
414 | @JsonKey(ignore: true)
415 | _$$_PaymentResultCopyWith<_$_PaymentResult> get copyWith =>
416 | throw _privateConstructorUsedError;
417 | }
418 |
--------------------------------------------------------------------------------
/lib/src/payment_result.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of 'payment_result.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | _$_PaymentResult _$$_PaymentResultFromJson(Map json) =>
10 | _$_PaymentResult(
11 | json['result'] as String,
12 | json['id'] as int?,
13 | json['status'] as String?,
14 | json['statusDetail'] as String?,
15 | json['paymentMethodId'] as String?,
16 | json['paymentTypeId'] as String?,
17 | json['issuerId'] as String?,
18 | json['installments'] as int?,
19 | json['captured'] as bool?,
20 | json['liveMode'] as bool?,
21 | json['operationType'] as String?,
22 | json['transactionAmount'] as String?,
23 | json['errorMessage'] as String?,
24 | );
25 |
26 | Map _$$_PaymentResultToJson(_$_PaymentResult instance) =>
27 | {
28 | 'result': instance.result,
29 | 'id': instance.id,
30 | 'status': instance.status,
31 | 'statusDetail': instance.statusDetail,
32 | 'paymentMethodId': instance.paymentMethodId,
33 | 'paymentTypeId': instance.paymentTypeId,
34 | 'issuerId': instance.issuerId,
35 | 'installments': instance.installments,
36 | 'captured': instance.captured,
37 | 'liveMode': instance.liveMode,
38 | 'operationType': instance.operationType,
39 | 'transactionAmount': instance.transactionAmount,
40 | 'errorMessage': instance.errorMessage,
41 | };
42 |
--------------------------------------------------------------------------------
/mercado_pago_mobile_checkout.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | _fe_analyzer_shared:
5 | dependency: transitive
6 | description:
7 | name: _fe_analyzer_shared
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "50.0.0"
11 | analyzer:
12 | dependency: transitive
13 | description:
14 | name: analyzer
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "5.2.0"
18 | args:
19 | dependency: transitive
20 | description:
21 | name: args
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "2.4.0"
25 | async:
26 | dependency: transitive
27 | description:
28 | name: async
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "2.9.0"
32 | boolean_selector:
33 | dependency: transitive
34 | description:
35 | name: boolean_selector
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "2.1.0"
39 | build:
40 | dependency: transitive
41 | description:
42 | name: build
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "2.3.1"
46 | build_config:
47 | dependency: transitive
48 | description:
49 | name: build_config
50 | url: "https://pub.dartlang.org"
51 | source: hosted
52 | version: "1.1.1"
53 | build_daemon:
54 | dependency: transitive
55 | description:
56 | name: build_daemon
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "3.1.0"
60 | build_resolvers:
61 | dependency: transitive
62 | description:
63 | name: build_resolvers
64 | url: "https://pub.dartlang.org"
65 | source: hosted
66 | version: "2.1.0"
67 | build_runner:
68 | dependency: "direct dev"
69 | description:
70 | name: build_runner
71 | url: "https://pub.dartlang.org"
72 | source: hosted
73 | version: "2.3.3"
74 | build_runner_core:
75 | dependency: transitive
76 | description:
77 | name: build_runner_core
78 | url: "https://pub.dartlang.org"
79 | source: hosted
80 | version: "7.2.7"
81 | built_collection:
82 | dependency: transitive
83 | description:
84 | name: built_collection
85 | url: "https://pub.dartlang.org"
86 | source: hosted
87 | version: "5.1.1"
88 | built_value:
89 | dependency: transitive
90 | description:
91 | name: built_value
92 | url: "https://pub.dartlang.org"
93 | source: hosted
94 | version: "8.4.3"
95 | characters:
96 | dependency: transitive
97 | description:
98 | name: characters
99 | url: "https://pub.dartlang.org"
100 | source: hosted
101 | version: "1.2.1"
102 | checked_yaml:
103 | dependency: transitive
104 | description:
105 | name: checked_yaml
106 | url: "https://pub.dartlang.org"
107 | source: hosted
108 | version: "2.0.2"
109 | clock:
110 | dependency: transitive
111 | description:
112 | name: clock
113 | url: "https://pub.dartlang.org"
114 | source: hosted
115 | version: "1.1.1"
116 | code_builder:
117 | dependency: transitive
118 | description:
119 | name: code_builder
120 | url: "https://pub.dartlang.org"
121 | source: hosted
122 | version: "4.4.0"
123 | collection:
124 | dependency: transitive
125 | description:
126 | name: collection
127 | url: "https://pub.dartlang.org"
128 | source: hosted
129 | version: "1.16.0"
130 | convert:
131 | dependency: transitive
132 | description:
133 | name: convert
134 | url: "https://pub.dartlang.org"
135 | source: hosted
136 | version: "3.1.1"
137 | crypto:
138 | dependency: transitive
139 | description:
140 | name: crypto
141 | url: "https://pub.dartlang.org"
142 | source: hosted
143 | version: "3.0.2"
144 | dart_style:
145 | dependency: transitive
146 | description:
147 | name: dart_style
148 | url: "https://pub.dartlang.org"
149 | source: hosted
150 | version: "2.2.4"
151 | fake_async:
152 | dependency: transitive
153 | description:
154 | name: fake_async
155 | url: "https://pub.dartlang.org"
156 | source: hosted
157 | version: "1.3.1"
158 | file:
159 | dependency: transitive
160 | description:
161 | name: file
162 | url: "https://pub.dartlang.org"
163 | source: hosted
164 | version: "6.1.4"
165 | fixnum:
166 | dependency: transitive
167 | description:
168 | name: fixnum
169 | url: "https://pub.dartlang.org"
170 | source: hosted
171 | version: "1.0.1"
172 | flutter:
173 | dependency: "direct main"
174 | description: flutter
175 | source: sdk
176 | version: "0.0.0"
177 | flutter_test:
178 | dependency: "direct dev"
179 | description: flutter
180 | source: sdk
181 | version: "0.0.0"
182 | freezed:
183 | dependency: "direct dev"
184 | description:
185 | name: freezed
186 | url: "https://pub.dartlang.org"
187 | source: hosted
188 | version: "2.3.2"
189 | freezed_annotation:
190 | dependency: "direct main"
191 | description:
192 | name: freezed_annotation
193 | url: "https://pub.dartlang.org"
194 | source: hosted
195 | version: "2.2.0"
196 | frontend_server_client:
197 | dependency: transitive
198 | description:
199 | name: frontend_server_client
200 | url: "https://pub.dartlang.org"
201 | source: hosted
202 | version: "3.2.0"
203 | glob:
204 | dependency: transitive
205 | description:
206 | name: glob
207 | url: "https://pub.dartlang.org"
208 | source: hosted
209 | version: "2.1.1"
210 | graphs:
211 | dependency: transitive
212 | description:
213 | name: graphs
214 | url: "https://pub.dartlang.org"
215 | source: hosted
216 | version: "2.2.0"
217 | http_multi_server:
218 | dependency: transitive
219 | description:
220 | name: http_multi_server
221 | url: "https://pub.dartlang.org"
222 | source: hosted
223 | version: "3.2.1"
224 | http_parser:
225 | dependency: transitive
226 | description:
227 | name: http_parser
228 | url: "https://pub.dartlang.org"
229 | source: hosted
230 | version: "4.0.2"
231 | io:
232 | dependency: transitive
233 | description:
234 | name: io
235 | url: "https://pub.dartlang.org"
236 | source: hosted
237 | version: "1.0.4"
238 | js:
239 | dependency: transitive
240 | description:
241 | name: js
242 | url: "https://pub.dartlang.org"
243 | source: hosted
244 | version: "0.6.5"
245 | json_annotation:
246 | dependency: "direct main"
247 | description:
248 | name: json_annotation
249 | url: "https://pub.dartlang.org"
250 | source: hosted
251 | version: "4.8.0"
252 | json_serializable:
253 | dependency: "direct dev"
254 | description:
255 | name: json_serializable
256 | url: "https://pub.dartlang.org"
257 | source: hosted
258 | version: "6.6.1"
259 | logging:
260 | dependency: transitive
261 | description:
262 | name: logging
263 | url: "https://pub.dartlang.org"
264 | source: hosted
265 | version: "1.1.1"
266 | matcher:
267 | dependency: transitive
268 | description:
269 | name: matcher
270 | url: "https://pub.dartlang.org"
271 | source: hosted
272 | version: "0.12.12"
273 | material_color_utilities:
274 | dependency: transitive
275 | description:
276 | name: material_color_utilities
277 | url: "https://pub.dartlang.org"
278 | source: hosted
279 | version: "0.1.5"
280 | meta:
281 | dependency: transitive
282 | description:
283 | name: meta
284 | url: "https://pub.dartlang.org"
285 | source: hosted
286 | version: "1.8.0"
287 | mime:
288 | dependency: transitive
289 | description:
290 | name: mime
291 | url: "https://pub.dartlang.org"
292 | source: hosted
293 | version: "1.0.4"
294 | package_config:
295 | dependency: transitive
296 | description:
297 | name: package_config
298 | url: "https://pub.dartlang.org"
299 | source: hosted
300 | version: "2.1.0"
301 | path:
302 | dependency: transitive
303 | description:
304 | name: path
305 | url: "https://pub.dartlang.org"
306 | source: hosted
307 | version: "1.8.2"
308 | pool:
309 | dependency: transitive
310 | description:
311 | name: pool
312 | url: "https://pub.dartlang.org"
313 | source: hosted
314 | version: "1.5.1"
315 | pub_semver:
316 | dependency: transitive
317 | description:
318 | name: pub_semver
319 | url: "https://pub.dartlang.org"
320 | source: hosted
321 | version: "2.1.3"
322 | pubspec_parse:
323 | dependency: transitive
324 | description:
325 | name: pubspec_parse
326 | url: "https://pub.dartlang.org"
327 | source: hosted
328 | version: "1.2.1"
329 | shelf:
330 | dependency: transitive
331 | description:
332 | name: shelf
333 | url: "https://pub.dartlang.org"
334 | source: hosted
335 | version: "1.4.0"
336 | shelf_web_socket:
337 | dependency: transitive
338 | description:
339 | name: shelf_web_socket
340 | url: "https://pub.dartlang.org"
341 | source: hosted
342 | version: "1.0.3"
343 | sky_engine:
344 | dependency: transitive
345 | description: flutter
346 | source: sdk
347 | version: "0.0.99"
348 | source_gen:
349 | dependency: transitive
350 | description:
351 | name: source_gen
352 | url: "https://pub.dartlang.org"
353 | source: hosted
354 | version: "1.2.7"
355 | source_helper:
356 | dependency: transitive
357 | description:
358 | name: source_helper
359 | url: "https://pub.dartlang.org"
360 | source: hosted
361 | version: "1.3.3"
362 | source_span:
363 | dependency: transitive
364 | description:
365 | name: source_span
366 | url: "https://pub.dartlang.org"
367 | source: hosted
368 | version: "1.9.0"
369 | stack_trace:
370 | dependency: transitive
371 | description:
372 | name: stack_trace
373 | url: "https://pub.dartlang.org"
374 | source: hosted
375 | version: "1.10.0"
376 | stream_channel:
377 | dependency: transitive
378 | description:
379 | name: stream_channel
380 | url: "https://pub.dartlang.org"
381 | source: hosted
382 | version: "2.1.0"
383 | stream_transform:
384 | dependency: transitive
385 | description:
386 | name: stream_transform
387 | url: "https://pub.dartlang.org"
388 | source: hosted
389 | version: "2.1.0"
390 | string_scanner:
391 | dependency: transitive
392 | description:
393 | name: string_scanner
394 | url: "https://pub.dartlang.org"
395 | source: hosted
396 | version: "1.1.1"
397 | term_glyph:
398 | dependency: transitive
399 | description:
400 | name: term_glyph
401 | url: "https://pub.dartlang.org"
402 | source: hosted
403 | version: "1.2.1"
404 | test_api:
405 | dependency: transitive
406 | description:
407 | name: test_api
408 | url: "https://pub.dartlang.org"
409 | source: hosted
410 | version: "0.4.12"
411 | timing:
412 | dependency: transitive
413 | description:
414 | name: timing
415 | url: "https://pub.dartlang.org"
416 | source: hosted
417 | version: "1.0.1"
418 | typed_data:
419 | dependency: transitive
420 | description:
421 | name: typed_data
422 | url: "https://pub.dartlang.org"
423 | source: hosted
424 | version: "1.3.1"
425 | vector_math:
426 | dependency: transitive
427 | description:
428 | name: vector_math
429 | url: "https://pub.dartlang.org"
430 | source: hosted
431 | version: "2.1.2"
432 | watcher:
433 | dependency: transitive
434 | description:
435 | name: watcher
436 | url: "https://pub.dartlang.org"
437 | source: hosted
438 | version: "1.0.2"
439 | web_socket_channel:
440 | dependency: transitive
441 | description:
442 | name: web_socket_channel
443 | url: "https://pub.dartlang.org"
444 | source: hosted
445 | version: "2.3.0"
446 | yaml:
447 | dependency: transitive
448 | description:
449 | name: yaml
450 | url: "https://pub.dartlang.org"
451 | source: hosted
452 | version: "3.1.1"
453 | sdks:
454 | dart: ">=2.18.0 <3.0.0"
455 | flutter: ">=1.12.13+hotfix.6"
456 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: mercado_pago_mobile_checkout
2 | description: Mercado Pago's Unofficial Flutter checkout library that implements the MercadoPago Mobile Checkout using the native SDK.
3 | version: 0.2.1
4 | homepage: https://github.com/Gazer/px-flutter
5 |
6 | environment:
7 | sdk: ">=2.12.0 <3.0.0"
8 | flutter: ">=1.12.13+hotfix.6"
9 |
10 | dependencies:
11 | flutter:
12 | sdk: flutter
13 | json_annotation: ^4.7.0
14 | freezed_annotation: ^2.1.0
15 |
16 | dev_dependencies:
17 | flutter_test:
18 | sdk: flutter
19 | build_runner:
20 | freezed: ^2.1.1
21 | json_serializable: ^6.5.0
22 |
23 | # For information on the generic Dart part of this file, see the
24 | # following page: https://dart.dev/tools/pub/pubspec
25 |
26 | # The following section is specific to Flutter.
27 | flutter:
28 | # This section identifies this Flutter project as a plugin project.
29 | # The androidPackage and pluginClass identifiers should not ordinarily
30 | # be modified. They are used by the tooling to maintain consistency when
31 | # adding or updating assets for this project.
32 | plugin:
33 | platforms:
34 | android:
35 | package: ar.com.p39.mercado_pago_mobile_checkout
36 | pluginClass: MercadoPagoMobileCheckoutPlugin
37 | ios:
38 | pluginClass: MercadoPagoMobileCheckoutPlugin
39 | # macos:
40 | # pluginClass: HelloPlugin
41 | # web:
42 | # pluginClass: HelloPlugin
43 | # fileName: hello_web.dart
44 |
45 | # To add assets to your plugin package, add an assets section, like this:
46 | # assets:
47 | # - images/a_dot_burr.jpeg
48 | # - images/a_dot_ham.jpeg
49 | #
50 | # For details regarding assets in packages, see
51 | # https://flutter.dev/assets-and-images/#from-packages
52 | #
53 | # An image asset can refer to one or more resolution-specific "variants", see
54 | # https://flutter.dev/assets-and-images/#resolution-aware.
55 |
56 | # To add custom fonts to your plugin package, add a fonts section here,
57 | # in this "flutter" section. Each entry in this list should have a
58 | # "family" key with the font family name, and a "fonts" key with a
59 | # list giving the asset and other descriptors for the font. For
60 | # example:
61 | # fonts:
62 | # - family: Schyler
63 | # fonts:
64 | # - asset: fonts/Schyler-Regular.ttf
65 | # - asset: fonts/Schyler-Italic.ttf
66 | # style: italic
67 | # - family: Trajan Pro
68 | # fonts:
69 | # - asset: fonts/TrajanPro.ttf
70 | # - asset: fonts/TrajanPro_Bold.ttf
71 | # weight: 700
72 | #
73 | # For details regarding fonts in packages, see
74 | # https://flutter.dev/custom-fonts/#from-packages
75 |
--------------------------------------------------------------------------------
/test/mercado_pago_mobile_checkout_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart';
2 | import 'package:flutter_test/flutter_test.dart';
3 | import 'package:mercado_pago_mobile_checkout/mercado_pago_mobile_checkout.dart';
4 |
5 | void main() {
6 | const MethodChannel channel = MethodChannel('mercado_pago_mobile_checkout');
7 |
8 | TestWidgetsFlutterBinding.ensureInitialized();
9 |
10 | setUp(() {
11 | channel.setMockMethodCallHandler((MethodCall methodCall) async {
12 | return '42';
13 | });
14 | });
15 |
16 | tearDown(() {
17 | channel.setMockMethodCallHandler(null);
18 | });
19 |
20 | test('getPlatformVersion', () async {
21 | expect(await MercadoPagoMobileCheckout.platformVersion, '42');
22 | });
23 | }
24 |
--------------------------------------------------------------------------------