Commit 8d1542c5d596aa04677ee178ec7990f283fca538

Authored by wdn127929
1 parent b3a1b2eb

优惠券发短信

Showing 89 changed files with 1950 additions and 1 deletions
@@ -3,6 +3,7 @@ import 'package:flutter_easyrefresh/easy_refresh.dart'; @@ -3,6 +3,7 @@ import 'package:flutter_easyrefresh/easy_refresh.dart';
3 import 'package:flutter_screenutil/screenutil.dart'; 3 import 'package:flutter_screenutil/screenutil.dart';
4 import 'package:one_key/constant/state.dart'; 4 import 'package:one_key/constant/state.dart';
5 import 'package:one_key/pages/coupon/coupon_item.dart'; 5 import 'package:one_key/pages/coupon/coupon_item.dart';
  6 +import 'package:one_key/provider/SmsModel.dart';
6 import 'package:one_key/provider/coupon_provider.dart'; 7 import 'package:one_key/provider/coupon_provider.dart';
7 import 'package:one_key/provider/user_model.dart'; 8 import 'package:one_key/provider/user_model.dart';
8 import 'package:one_key/res/colors.dart'; 9 import 'package:one_key/res/colors.dart';
@@ -16,6 +17,7 @@ import 'package:one_key/widgets/round_button.dart'; @@ -16,6 +17,7 @@ import 'package:one_key/widgets/round_button.dart';
16 import 'package:one_key/widgets/system_app_bar.dart'; 17 import 'package:one_key/widgets/system_app_bar.dart';
17 import 'package:one_key/widgets/v_empty_view.dart'; 18 import 'package:one_key/widgets/v_empty_view.dart';
18 import 'package:provider/provider.dart'; 19 import 'package:provider/provider.dart';
  20 +import 'package:sendsms/sendsms.dart';
19 21
20 class CouponSelectPage extends StatefulWidget { 22 class CouponSelectPage extends StatefulWidget {
21 final String from; 23 final String from;
@@ -238,8 +240,12 @@ class _CouponSelectPageState extends State<CouponSelectPage> { @@ -238,8 +240,12 @@ class _CouponSelectPageState extends State<CouponSelectPage> {
238 title: '确认发送', 240 title: '确认发送',
239 content: '是否确定为当前所选顾客发送该优惠券', lCallback: () { 241 content: '是否确定为当前所选顾客发送该优惠券', lCallback: () {
240 print('取消发送'); 242 print('取消发送');
241 - }, rCallback: () { 243 + }, rCallback: () async {
242 print('确定发送'); 244 print('确定发送');
  245 + SmsModel smsModel = new SmsModel();
  246 + // String sms = await smsModel.getSmsContent(context, params);
  247 + String phoneNumber = "";
  248 + await Sendsms.onSendSMS(phoneNumber, 'smsfffffff');
243 }); 249 });
244 } else { 250 } else {
245 Navigator.pop(context); 251 Navigator.pop(context);
  1 +.DS_Store
  2 +.dart_tool/
  3 +
  4 +.packages
  5 +.pub/
  6 +
  7 +build/
  1 +#Wed Apr 08 09:19:28 COT 2020
  2 +gradle.version=5.2.1
  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
  1 +## 1.0.3
  2 +
  3 +* TODO: Describe initial release.
  4 +Solicitud de permiso SMS
  1 +TODO: Add your license here.
  1 +# sendsms
  2 +
  3 +Envio SMS desde la aplicación
  4 +
  5 +## Getting Started
  6 +
  7 +Permite el envio SMS sin salir desde la aplicacion utilizando el permiso de envio SMS
  8 +
  9 +Disponible solo para android
  1 +*.iml
  2 +.gradle
  3 +/local.properties
  4 +/.idea/workspace.xml
  5 +/.idea/libraries
  6 +.DS_Store
  7 +/build
  8 +/captures
  1 +group 'com.emsoluciones.app.sendsms'
  2 +version '1.0'
  3 +
  4 +buildscript {
  5 + repositories {
  6 + google()
  7 + jcenter()
  8 + }
  9 +
  10 + dependencies {
  11 + classpath 'com.android.tools.build:gradle:3.5.0'
  12 + }
  13 +}
  14 +
  15 +rootProject.allprojects {
  16 + repositories {
  17 + google()
  18 + jcenter()
  19 + }
  20 +}
  21 +
  22 +apply plugin: 'com.android.library'
  23 +
  24 +android {
  25 + compileSdkVersion 28
  26 +
  27 + defaultConfig {
  28 + minSdkVersion 16
  29 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  30 + }
  31 + lintOptions {
  32 + disable 'InvalidPackage'
  33 + }
  34 +}
  1 +org.gradle.jvmargs=-Xmx1536M
  2 +android.enableR8=true
  3 +android.useAndroidX=true
  4 +android.enableJetifier=true
  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
  1 +rootProject.name = 'sendsms'
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.emsoluciones.app.sendsms">
  3 + <uses-permission android:name="android.permission.SEND_SMS"/>
  4 +</manifest>
  1 +package com.emsoluciones.app.sendsms;
  2 +
  3 +import android.Manifest;
  4 +import android.app.Activity;
  5 +import android.content.pm.PackageManager;
  6 +import android.telephony.SmsManager;
  7 +import android.util.Log;
  8 +
  9 +import androidx.annotation.NonNull;
  10 +import androidx.core.app.ActivityCompat;
  11 +
  12 +import io.flutter.plugin.common.MethodCall;
  13 +import io.flutter.plugin.common.MethodChannel;
  14 +import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
  15 +import io.flutter.plugin.common.MethodChannel.Result;
  16 +import io.flutter.plugin.common.PluginRegistry.Registrar;
  17 +
  18 +import android.content.Intent;
  19 +import android.net.Uri;
  20 +
  21 +/**
  22 + * SendsmsPlugin
  23 + */
  24 +public class SendsmsPlugin implements MethodCallHandler {
  25 +
  26 + private MethodChannel methodChannel;
  27 +
  28 + private Activity activity;
  29 +
  30 + public SendsmsPlugin(Activity activity, MethodChannel methodChannel) {
  31 + this.activity = activity;
  32 + this.methodChannel = methodChannel;
  33 + this.methodChannel.setMethodCallHandler(this);
  34 + }
  35 +
  36 + public static void registerWith(Registrar registrar) {
  37 + final MethodChannel channel = new MethodChannel(registrar.messenger(), "sendsms");
  38 + channel.setMethodCallHandler(new SendsmsPlugin(registrar.activity(), channel));
  39 + }
  40 +
  41 +
  42 + @Override
  43 + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
  44 +
  45 + if (call.method.equals("getPermission")) {
  46 +
  47 + result.success(onSolicitudPermiso());
  48 + }else if (call.method.equals("hasPermission")){
  49 + result.success(handlerPermission());
  50 + } else if (call.method.equals("sendSMS")) {
  51 + String phoneNumber = call.argument("phoneNumber").toString();
  52 + String message = call.argument("message").toString();
  53 + String uri = "sms:?body="+message;
  54 + Intent launchIntent =
  55 + new Intent(Intent.ACTION_VIEW)
  56 + .setData(Uri.parse(uri));
  57 + activity.startActivity(launchIntent);
  58 + result.success(true);
  59 + } else {
  60 + result.notImplemented();
  61 + }
  62 + }
  63 +
  64 +
  65 + public boolean onSolicitudPermiso() {
  66 + // Solicitud de Permiso
  67 + if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
  68 + ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.SEND_SMS,}, 1000);
  69 + return false;
  70 + }
  71 + return true;
  72 + }
  73 +
  74 + public boolean handlerPermission(){
  75 + return (ActivityCompat.checkSelfPermission(activity, Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_GRANTED);
  76 + }
  77 +
  78 +}
  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 +.dart_tool/
  26 +.flutter-plugins
  27 +.flutter-plugins-dependencies
  28 +.packages
  29 +.pub-cache/
  30 +.pub/
  31 +/build/
  32 +
  33 +# Web related
  34 +lib/generated_plugin_registrant.dart
  35 +
  36 +# Exceptions to above rules.
  37 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
  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: app
  1 +# sendsms_example
  2 +
  3 +Demonstrates how to use the sendsms plugin.
  4 +
  5 +## Getting Started
  6 +
  7 +This project is a starting point for a Flutter application.
  8 +
  9 +A few resources to get you started if this is your first Flutter project:
  10 +
  11 +- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
  12 +- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
  13 +
  14 +For help getting started with Flutter, view our
  15 +[online documentation](https://flutter.dev/docs), which offers tutorials,
  16 +samples, guidance on mobile development, and a full API reference.
  1 +gradle-wrapper.jar
  2 +/.gradle
  3 +/captures/
  4 +/gradlew
  5 +/gradlew.bat
  6 +/local.properties
  7 +GeneratedPluginRegistrant.java
  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 from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
  26 +
  27 +android {
  28 + compileSdkVersion 28
  29 +
  30 + lintOptions {
  31 + disable 'InvalidPackage'
  32 + }
  33 +
  34 + defaultConfig {
  35 + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
  36 + applicationId "com.emsoluciones.app.sendsms_example"
  37 + minSdkVersion 16
  38 + targetSdkVersion 28
  39 + versionCode flutterVersionCode.toInteger()
  40 + versionName flutterVersionName
  41 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  42 + }
  43 +
  44 + buildTypes {
  45 + release {
  46 + // TODO: Add your own signing config for the release build.
  47 + // Signing with the debug keys for now, so `flutter run --release` works.
  48 + signingConfig signingConfigs.debug
  49 + }
  50 + }
  51 +}
  52 +
  53 +flutter {
  54 + source '../..'
  55 +}
  56 +
  57 +dependencies {
  58 + testImplementation 'junit:junit:4.12'
  59 + androidTestImplementation 'androidx.test:runner:1.1.1'
  60 + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
  61 +}
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.emsoluciones.app.sendsms_example">
  3 + <!-- Flutter needs it to communicate with the running application
  4 + to allow setting breakpoints, to provide hot reload, etc.
  5 + -->
  6 + <uses-permission android:name="android.permission.INTERNET"/>
  7 +</manifest>
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.emsoluciones.app.sendsms_example">
  3 + <!-- io.flutter.app.FlutterApplication is an android.app.Application that
  4 + calls FlutterMain.startInitialization(this); in its onCreate method.
  5 + In most cases you can leave this as-is, but you if you want to provide
  6 + additional functionality it is fine to subclass or reimplement
  7 + FlutterApplication and put your custom class here. -->
  8 + <application
  9 + android:name="io.flutter.app.FlutterApplication"
  10 + android:label="sendsms_example"
  11 + android:icon="@mipmap/ic_launcher">
  12 + <activity
  13 + android:name=".MainActivity"
  14 + android:launchMode="singleTop"
  15 + android:theme="@style/LaunchTheme"
  16 + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
  17 + android:hardwareAccelerated="true"
  18 + android:windowSoftInputMode="adjustResize">
  19 + <intent-filter>
  20 + <action android:name="android.intent.action.MAIN"/>
  21 + <category android:name="android.intent.category.LAUNCHER"/>
  22 + </intent-filter>
  23 + </activity>
  24 + <!-- Don't delete the meta-data below.
  25 + This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
  26 + <meta-data
  27 + android:name="flutterEmbedding"
  28 + android:value="2" />
  29 + </application>
  30 +</manifest>
  1 +package com.emsoluciones.app.sendsms_example;
  2 +
  3 +import androidx.annotation.NonNull;
  4 +import io.flutter.embedding.android.FlutterActivity;
  5 +import io.flutter.embedding.engine.FlutterEngine;
  6 +import io.flutter.plugins.GeneratedPluginRegistrant;
  7 +
  8 +public class MainActivity extends FlutterActivity {
  9 + @Override
  10 + public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
  11 + GeneratedPluginRegistrant.registerWith(flutterEngine);
  12 + }
  13 +}
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<!-- Modify this file to customize your launch splash screen -->
  3 +<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  4 + <item android:drawable="@android:color/white" />
  5 +
  6 + <!-- You can insert your own image assets here -->
  7 + <!-- <item>
  8 + <bitmap
  9 + android:gravity="center"
  10 + android:src="@mipmap/launch_image" />
  11 + </item> -->
  12 +</layer-list>
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<resources>
  3 + <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
  4 + <!-- Show a splash screen on the activity. Automatically removed when
  5 + Flutter draws its first frame -->
  6 + <item name="android:windowBackground">@drawable/launch_background</item>
  7 + </style>
  8 +</resources>
  1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2 + package="com.emsoluciones.app.sendsms_example">
  3 + <!-- Flutter needs it to communicate with the running application
  4 + to allow setting breakpoints, to provide hot reload, etc.
  5 + -->
  6 + <uses-permission android:name="android.permission.INTERNET"/>
  7 +</manifest>
  1 +buildscript {
  2 + repositories {
  3 + google()
  4 + jcenter()
  5 + }
  6 +
  7 + dependencies {
  8 + classpath 'com.android.tools.build:gradle:3.6.1'
  9 + }
  10 +}
  11 +
  12 +allprojects {
  13 + repositories {
  14 + google()
  15 + jcenter()
  16 + }
  17 +}
  18 +
  19 +rootProject.buildDir = '../build'
  20 +subprojects {
  21 + project.buildDir = "${rootProject.buildDir}/${project.name}"
  22 +}
  23 +subprojects {
  24 + project.evaluationDependsOn(':app')
  25 +}
  26 +
  27 +task clean(type: Delete) {
  28 + delete rootProject.buildDir
  29 +}
  1 +org.gradle.jvmargs=-Xmx1536M
  2 +android.enableR8=true
  3 +android.useAndroidX=true
  4 +android.enableJetifier=true
  1 +#Sun Apr 05 09:32:59 COT 2020
  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-5.6.4-all.zip
  1 +include ':app'
  2 +
  3 +def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
  4 +
  5 +def plugins = new Properties()
  6 +def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
  7 +if (pluginsFile.exists()) {
  8 + pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
  9 +}
  10 +
  11 +plugins.each { name, path ->
  12 + def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
  13 + include ":$name"
  14 + project(":$name").projectDir = pluginDirectory
  15 +}
  1 +*.mode1v3
  2 +*.mode2v3
  3 +*.moved-aside
  4 +*.pbxuser
  5 +*.perspectivev3
  6 +**/*sync/
  7 +.sconsign.dblite
  8 +.tags*
  9 +**/.vagrant/
  10 +**/DerivedData/
  11 +Icon?
  12 +**/Pods/
  13 +**/.symlinks/
  14 +profile
  15 +xcuserdata
  16 +**/.generated/
  17 +Flutter/App.framework
  18 +Flutter/Flutter.framework
  19 +Flutter/Flutter.podspec
  20 +Flutter/Generated.xcconfig
  21 +Flutter/app.flx
  22 +Flutter/app.zip
  23 +Flutter/flutter_assets/
  24 +Flutter/flutter_export_environment.sh
  25 +ServiceDefinitions.json
  26 +Runner/GeneratedPluginRegistrant.*
  27 +
  28 +# Exceptions to above rules.
  29 +!default.mode1v3
  30 +!default.mode2v3
  31 +!default.pbxuser
  32 +!default.perspectivev3
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>App</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>io.flutter.flutter.app</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>App</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>FMWK</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>1.0</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>1.0</string>
  23 + <key>MinimumOSVersion</key>
  24 + <string>8.0</string>
  25 +</dict>
  26 +</plist>
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
  2 +#include "Generated.xcconfig"
  1 +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
  2 +#include "Generated.xcconfig"
  1 +# Uncomment this line to define a global platform for your project
  2 +# platform :ios, '9.0'
  3 +
  4 +# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
  5 +ENV['COCOAPODS_DISABLE_STATS'] = 'true'
  6 +
  7 +project 'Runner', {
  8 + 'Debug' => :debug,
  9 + 'Profile' => :release,
  10 + 'Release' => :release,
  11 +}
  12 +
  13 +def flutter_root
  14 + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  15 + unless File.exist?(generated_xcode_build_settings_path)
  16 + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  17 + end
  18 +
  19 + File.foreach(generated_xcode_build_settings_path) do |line|
  20 + matches = line.match(/FLUTTER_ROOT\=(.*)/)
  21 + return matches[1].strip if matches
  22 + end
  23 + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
  24 +end
  25 +
  26 +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
  27 +
  28 +flutter_ios_podfile_setup
  29 +
  30 +target 'Runner' do
  31 + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  32 +end
  33 +
  34 +post_install do |installer|
  35 + installer.pods_project.targets.each do |target|
  36 + flutter_additional_ios_build_settings(target)
  37 + end
  38 +end
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 46;
  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 + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
  13 + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
  14 + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
  15 + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
  16 + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
  17 + 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
  18 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
  19 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
  20 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
  21 +/* End PBXBuildFile section */
  22 +
  23 +/* Begin PBXCopyFilesBuildPhase section */
  24 + 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
  25 + isa = PBXCopyFilesBuildPhase;
  26 + buildActionMask = 2147483647;
  27 + dstPath = "";
  28 + dstSubfolderSpec = 10;
  29 + files = (
  30 + 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
  31 + 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */,
  32 + );
  33 + name = "Embed Frameworks";
  34 + runOnlyForDeploymentPostprocessing = 0;
  35 + };
  36 +/* End PBXCopyFilesBuildPhase section */
  37 +
  38 +/* Begin PBXFileReference section */
  39 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
  40 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
  41 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
  42 + 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
  43 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
  44 + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
  45 + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
  46 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
  47 + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
  48 + 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
  49 + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
  50 + 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
  51 + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
  52 + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
  53 + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
  54 + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
  55 +/* End PBXFileReference section */
  56 +
  57 +/* Begin PBXFrameworksBuildPhase section */
  58 + 97C146EB1CF9000F007C117D /* Frameworks */ = {
  59 + isa = PBXFrameworksBuildPhase;
  60 + buildActionMask = 2147483647;
  61 + files = (
  62 + 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
  63 + 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
  64 + );
  65 + runOnlyForDeploymentPostprocessing = 0;
  66 + };
  67 +/* End PBXFrameworksBuildPhase section */
  68 +
  69 +/* Begin PBXGroup section */
  70 + 9740EEB11CF90186004384FC /* Flutter */ = {
  71 + isa = PBXGroup;
  72 + children = (
  73 + 3B80C3931E831B6300D905FE /* App.framework */,
  74 + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
  75 + 9740EEBA1CF902C7004384FC /* Flutter.framework */,
  76 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  77 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  78 + 9740EEB31CF90195004384FC /* Generated.xcconfig */,
  79 + );
  80 + name = Flutter;
  81 + sourceTree = "<group>";
  82 + };
  83 + 97C146E51CF9000F007C117D = {
  84 + isa = PBXGroup;
  85 + children = (
  86 + 9740EEB11CF90186004384FC /* Flutter */,
  87 + 97C146F01CF9000F007C117D /* Runner */,
  88 + 97C146EF1CF9000F007C117D /* Products */,
  89 + CF3B75C9A7D2FA2A4C99F110 /* Frameworks */,
  90 + );
  91 + sourceTree = "<group>";
  92 + };
  93 + 97C146EF1CF9000F007C117D /* Products */ = {
  94 + isa = PBXGroup;
  95 + children = (
  96 + 97C146EE1CF9000F007C117D /* Runner.app */,
  97 + );
  98 + name = Products;
  99 + sourceTree = "<group>";
  100 + };
  101 + 97C146F01CF9000F007C117D /* Runner */ = {
  102 + isa = PBXGroup;
  103 + children = (
  104 + 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
  105 + 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
  106 + 97C146FA1CF9000F007C117D /* Main.storyboard */,
  107 + 97C146FD1CF9000F007C117D /* Assets.xcassets */,
  108 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
  109 + 97C147021CF9000F007C117D /* Info.plist */,
  110 + 97C146F11CF9000F007C117D /* Supporting Files */,
  111 + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
  112 + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
  113 + );
  114 + path = Runner;
  115 + sourceTree = "<group>";
  116 + };
  117 + 97C146F11CF9000F007C117D /* Supporting Files */ = {
  118 + isa = PBXGroup;
  119 + children = (
  120 + 97C146F21CF9000F007C117D /* main.m */,
  121 + );
  122 + name = "Supporting Files";
  123 + sourceTree = "<group>";
  124 + };
  125 +/* End PBXGroup section */
  126 +
  127 +/* Begin PBXNativeTarget section */
  128 + 97C146ED1CF9000F007C117D /* Runner */ = {
  129 + isa = PBXNativeTarget;
  130 + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
  131 + buildPhases = (
  132 + 9740EEB61CF901F6004384FC /* Run Script */,
  133 + 97C146EA1CF9000F007C117D /* Sources */,
  134 + 97C146EB1CF9000F007C117D /* Frameworks */,
  135 + 97C146EC1CF9000F007C117D /* Resources */,
  136 + 9705A1C41CF9048500538489 /* Embed Frameworks */,
  137 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
  138 + );
  139 + buildRules = (
  140 + );
  141 + dependencies = (
  142 + );
  143 + name = Runner;
  144 + productName = Runner;
  145 + productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
  146 + productType = "com.apple.product-type.application";
  147 + };
  148 +/* End PBXNativeTarget section */
  149 +
  150 +/* Begin PBXProject section */
  151 + 97C146E61CF9000F007C117D /* Project object */ = {
  152 + isa = PBXProject;
  153 + attributes = {
  154 + LastUpgradeCheck = 1020;
  155 + ORGANIZATIONNAME = "The Chromium Authors";
  156 + TargetAttributes = {
  157 + 97C146ED1CF9000F007C117D = {
  158 + CreatedOnToolsVersion = 7.3.1;
  159 + };
  160 + };
  161 + };
  162 + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
  163 + compatibilityVersion = "Xcode 3.2";
  164 + developmentRegion = en;
  165 + hasScannedForEncodings = 0;
  166 + knownRegions = (
  167 + en,
  168 + Base,
  169 + );
  170 + mainGroup = 97C146E51CF9000F007C117D;
  171 + productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
  172 + projectDirPath = "";
  173 + projectRoot = "";
  174 + targets = (
  175 + 97C146ED1CF9000F007C117D /* Runner */,
  176 + );
  177 + };
  178 +/* End PBXProject section */
  179 +
  180 +/* Begin PBXResourcesBuildPhase section */
  181 + 97C146EC1CF9000F007C117D /* Resources */ = {
  182 + isa = PBXResourcesBuildPhase;
  183 + buildActionMask = 2147483647;
  184 + files = (
  185 + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
  186 + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
  187 + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
  188 + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
  189 + );
  190 + runOnlyForDeploymentPostprocessing = 0;
  191 + };
  192 +/* End PBXResourcesBuildPhase section */
  193 +
  194 +/* Begin PBXShellScriptBuildPhase section */
  195 + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
  196 + isa = PBXShellScriptBuildPhase;
  197 + buildActionMask = 2147483647;
  198 + files = (
  199 + );
  200 + inputPaths = (
  201 + );
  202 + name = "Thin Binary";
  203 + outputPaths = (
  204 + );
  205 + runOnlyForDeploymentPostprocessing = 0;
  206 + shellPath = /bin/sh;
  207 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
  208 + };
  209 + 9740EEB61CF901F6004384FC /* Run Script */ = {
  210 + isa = PBXShellScriptBuildPhase;
  211 + buildActionMask = 2147483647;
  212 + files = (
  213 + );
  214 + inputPaths = (
  215 + );
  216 + name = "Run Script";
  217 + outputPaths = (
  218 + );
  219 + runOnlyForDeploymentPostprocessing = 0;
  220 + shellPath = /bin/sh;
  221 + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
  222 + };
  223 +/* End PBXShellScriptBuildPhase section */
  224 +
  225 +/* Begin PBXSourcesBuildPhase section */
  226 + 97C146EA1CF9000F007C117D /* Sources */ = {
  227 + isa = PBXSourcesBuildPhase;
  228 + buildActionMask = 2147483647;
  229 + files = (
  230 + 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
  231 + 97C146F31CF9000F007C117D /* main.m in Sources */,
  232 + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
  233 + );
  234 + runOnlyForDeploymentPostprocessing = 0;
  235 + };
  236 +/* End PBXSourcesBuildPhase section */
  237 +
  238 +/* Begin PBXVariantGroup section */
  239 + 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
  240 + isa = PBXVariantGroup;
  241 + children = (
  242 + 97C146FB1CF9000F007C117D /* Base */,
  243 + );
  244 + name = Main.storyboard;
  245 + sourceTree = "<group>";
  246 + };
  247 + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
  248 + isa = PBXVariantGroup;
  249 + children = (
  250 + 97C147001CF9000F007C117D /* Base */,
  251 + );
  252 + name = LaunchScreen.storyboard;
  253 + sourceTree = "<group>";
  254 + };
  255 +/* End PBXVariantGroup section */
  256 +
  257 +/* Begin XCBuildConfiguration section */
  258 + 249021D3217E4FDB00AE95B9 /* Profile */ = {
  259 + isa = XCBuildConfiguration;
  260 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  261 + buildSettings = {
  262 + ALWAYS_SEARCH_USER_PATHS = NO;
  263 + CLANG_ANALYZER_NONNULL = YES;
  264 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  265 + CLANG_CXX_LIBRARY = "libc++";
  266 + CLANG_ENABLE_MODULES = YES;
  267 + CLANG_ENABLE_OBJC_ARC = YES;
  268 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  269 + CLANG_WARN_BOOL_CONVERSION = YES;
  270 + CLANG_WARN_COMMA = YES;
  271 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  272 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  273 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  274 + CLANG_WARN_EMPTY_BODY = YES;
  275 + CLANG_WARN_ENUM_CONVERSION = YES;
  276 + CLANG_WARN_INFINITE_RECURSION = YES;
  277 + CLANG_WARN_INT_CONVERSION = YES;
  278 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  279 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  280 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  281 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  282 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  283 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  284 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  285 + CLANG_WARN_UNREACHABLE_CODE = YES;
  286 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  287 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  288 + COPY_PHASE_STRIP = NO;
  289 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  290 + ENABLE_NS_ASSERTIONS = NO;
  291 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  292 + GCC_C_LANGUAGE_STANDARD = gnu99;
  293 + GCC_NO_COMMON_BLOCKS = YES;
  294 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  295 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  296 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  297 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  298 + GCC_WARN_UNUSED_FUNCTION = YES;
  299 + GCC_WARN_UNUSED_VARIABLE = YES;
  300 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  301 + MTL_ENABLE_DEBUG_INFO = NO;
  302 + SDKROOT = iphoneos;
  303 + SUPPORTED_PLATFORMS = iphoneos;
  304 + TARGETED_DEVICE_FAMILY = "1,2";
  305 + VALIDATE_PRODUCT = YES;
  306 + };
  307 + name = Profile;
  308 + };
  309 + 249021D4217E4FDB00AE95B9 /* Profile */ = {
  310 + isa = XCBuildConfiguration;
  311 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  312 + buildSettings = {
  313 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  314 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  315 + ENABLE_BITCODE = NO;
  316 + FRAMEWORK_SEARCH_PATHS = (
  317 + "$(inherited)",
  318 + "$(PROJECT_DIR)/Flutter",
  319 + );
  320 + INFOPLIST_FILE = Runner/Info.plist;
  321 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  322 + LIBRARY_SEARCH_PATHS = (
  323 + "$(inherited)",
  324 + "$(PROJECT_DIR)/Flutter",
  325 + );
  326 + PRODUCT_BUNDLE_IDENTIFIER = com.emsoluciones.app.sendsmsExample;
  327 + PRODUCT_NAME = "$(TARGET_NAME)";
  328 + VERSIONING_SYSTEM = "apple-generic";
  329 + };
  330 + name = Profile;
  331 + };
  332 + 97C147031CF9000F007C117D /* Debug */ = {
  333 + isa = XCBuildConfiguration;
  334 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  335 + buildSettings = {
  336 + ALWAYS_SEARCH_USER_PATHS = NO;
  337 + CLANG_ANALYZER_NONNULL = YES;
  338 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  339 + CLANG_CXX_LIBRARY = "libc++";
  340 + CLANG_ENABLE_MODULES = YES;
  341 + CLANG_ENABLE_OBJC_ARC = YES;
  342 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  343 + CLANG_WARN_BOOL_CONVERSION = YES;
  344 + CLANG_WARN_COMMA = YES;
  345 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  346 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  347 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  348 + CLANG_WARN_EMPTY_BODY = YES;
  349 + CLANG_WARN_ENUM_CONVERSION = YES;
  350 + CLANG_WARN_INFINITE_RECURSION = YES;
  351 + CLANG_WARN_INT_CONVERSION = YES;
  352 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  353 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  354 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  355 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  356 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  357 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  358 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  359 + CLANG_WARN_UNREACHABLE_CODE = YES;
  360 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  361 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  362 + COPY_PHASE_STRIP = NO;
  363 + DEBUG_INFORMATION_FORMAT = dwarf;
  364 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  365 + ENABLE_TESTABILITY = YES;
  366 + GCC_C_LANGUAGE_STANDARD = gnu99;
  367 + GCC_DYNAMIC_NO_PIC = NO;
  368 + GCC_NO_COMMON_BLOCKS = YES;
  369 + GCC_OPTIMIZATION_LEVEL = 0;
  370 + GCC_PREPROCESSOR_DEFINITIONS = (
  371 + "DEBUG=1",
  372 + "$(inherited)",
  373 + );
  374 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  375 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  376 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  377 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  378 + GCC_WARN_UNUSED_FUNCTION = YES;
  379 + GCC_WARN_UNUSED_VARIABLE = YES;
  380 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  381 + MTL_ENABLE_DEBUG_INFO = YES;
  382 + ONLY_ACTIVE_ARCH = YES;
  383 + SDKROOT = iphoneos;
  384 + TARGETED_DEVICE_FAMILY = "1,2";
  385 + };
  386 + name = Debug;
  387 + };
  388 + 97C147041CF9000F007C117D /* Release */ = {
  389 + isa = XCBuildConfiguration;
  390 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  391 + buildSettings = {
  392 + ALWAYS_SEARCH_USER_PATHS = NO;
  393 + CLANG_ANALYZER_NONNULL = YES;
  394 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
  395 + CLANG_CXX_LIBRARY = "libc++";
  396 + CLANG_ENABLE_MODULES = YES;
  397 + CLANG_ENABLE_OBJC_ARC = YES;
  398 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  399 + CLANG_WARN_BOOL_CONVERSION = YES;
  400 + CLANG_WARN_COMMA = YES;
  401 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  402 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  403 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  404 + CLANG_WARN_EMPTY_BODY = YES;
  405 + CLANG_WARN_ENUM_CONVERSION = YES;
  406 + CLANG_WARN_INFINITE_RECURSION = YES;
  407 + CLANG_WARN_INT_CONVERSION = YES;
  408 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  409 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
  410 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  411 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  412 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  413 + CLANG_WARN_STRICT_PROTOTYPES = YES;
  414 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  415 + CLANG_WARN_UNREACHABLE_CODE = YES;
  416 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
  417 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
  418 + COPY_PHASE_STRIP = NO;
  419 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  420 + ENABLE_NS_ASSERTIONS = NO;
  421 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  422 + GCC_C_LANGUAGE_STANDARD = gnu99;
  423 + GCC_NO_COMMON_BLOCKS = YES;
  424 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  425 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  426 + GCC_WARN_UNDECLARED_SELECTOR = YES;
  427 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  428 + GCC_WARN_UNUSED_FUNCTION = YES;
  429 + GCC_WARN_UNUSED_VARIABLE = YES;
  430 + IPHONEOS_DEPLOYMENT_TARGET = 8.0;
  431 + MTL_ENABLE_DEBUG_INFO = NO;
  432 + SDKROOT = iphoneos;
  433 + SUPPORTED_PLATFORMS = iphoneos;
  434 + TARGETED_DEVICE_FAMILY = "1,2";
  435 + VALIDATE_PRODUCT = YES;
  436 + };
  437 + name = Release;
  438 + };
  439 + 97C147061CF9000F007C117D /* Debug */ = {
  440 + isa = XCBuildConfiguration;
  441 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  442 + buildSettings = {
  443 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  444 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  445 + ENABLE_BITCODE = NO;
  446 + FRAMEWORK_SEARCH_PATHS = (
  447 + "$(inherited)",
  448 + "$(PROJECT_DIR)/Flutter",
  449 + );
  450 + INFOPLIST_FILE = Runner/Info.plist;
  451 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  452 + LIBRARY_SEARCH_PATHS = (
  453 + "$(inherited)",
  454 + "$(PROJECT_DIR)/Flutter",
  455 + );
  456 + PRODUCT_BUNDLE_IDENTIFIER = com.emsoluciones.app.sendsmsExample;
  457 + PRODUCT_NAME = "$(TARGET_NAME)";
  458 + VERSIONING_SYSTEM = "apple-generic";
  459 + };
  460 + name = Debug;
  461 + };
  462 + 97C147071CF9000F007C117D /* Release */ = {
  463 + isa = XCBuildConfiguration;
  464 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  465 + buildSettings = {
  466 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  467 + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
  468 + ENABLE_BITCODE = NO;
  469 + FRAMEWORK_SEARCH_PATHS = (
  470 + "$(inherited)",
  471 + "$(PROJECT_DIR)/Flutter",
  472 + );
  473 + INFOPLIST_FILE = Runner/Info.plist;
  474 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
  475 + LIBRARY_SEARCH_PATHS = (
  476 + "$(inherited)",
  477 + "$(PROJECT_DIR)/Flutter",
  478 + );
  479 + PRODUCT_BUNDLE_IDENTIFIER = com.emsoluciones.app.sendsmsExample;
  480 + PRODUCT_NAME = "$(TARGET_NAME)";
  481 + VERSIONING_SYSTEM = "apple-generic";
  482 + };
  483 + name = Release;
  484 + };
  485 +/* End XCBuildConfiguration section */
  486 +
  487 +/* Begin XCConfigurationList section */
  488 + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
  489 + isa = XCConfigurationList;
  490 + buildConfigurations = (
  491 + 97C147031CF9000F007C117D /* Debug */,
  492 + 97C147041CF9000F007C117D /* Release */,
  493 + 249021D3217E4FDB00AE95B9 /* Profile */,
  494 + );
  495 + defaultConfigurationIsVisible = 0;
  496 + defaultConfigurationName = Release;
  497 + };
  498 + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
  499 + isa = XCConfigurationList;
  500 + buildConfigurations = (
  501 + 97C147061CF9000F007C117D /* Debug */,
  502 + 97C147071CF9000F007C117D /* Release */,
  503 + 249021D4217E4FDB00AE95B9 /* Profile */,
  504 + );
  505 + defaultConfigurationIsVisible = 0;
  506 + defaultConfigurationName = Release;
  507 + };
  508 +/* End XCConfigurationList section */
  509 + };
  510 + rootObject = 97C146E61CF9000F007C117D /* Project object */;
  511 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1020"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  18 + BuildableName = "Runner.app"
  19 + BlueprintName = "Runner"
  20 + ReferencedContainer = "container:Runner.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <Testables>
  31 + </Testables>
  32 + <MacroExpansion>
  33 + <BuildableReference
  34 + BuildableIdentifier = "primary"
  35 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  36 + BuildableName = "Runner.app"
  37 + BlueprintName = "Runner"
  38 + ReferencedContainer = "container:Runner.xcodeproj">
  39 + </BuildableReference>
  40 + </MacroExpansion>
  41 + <AdditionalOptions>
  42 + </AdditionalOptions>
  43 + </TestAction>
  44 + <LaunchAction
  45 + buildConfiguration = "Debug"
  46 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  47 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  48 + launchStyle = "0"
  49 + useCustomWorkingDirectory = "NO"
  50 + ignoresPersistentStateOnLaunch = "NO"
  51 + debugDocumentVersioning = "YES"
  52 + debugServiceExtension = "internal"
  53 + allowLocationSimulation = "YES">
  54 + <BuildableProductRunnable
  55 + runnableDebuggingMode = "0">
  56 + <BuildableReference
  57 + BuildableIdentifier = "primary"
  58 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  59 + BuildableName = "Runner.app"
  60 + BlueprintName = "Runner"
  61 + ReferencedContainer = "container:Runner.xcodeproj">
  62 + </BuildableReference>
  63 + </BuildableProductRunnable>
  64 + <AdditionalOptions>
  65 + </AdditionalOptions>
  66 + </LaunchAction>
  67 + <ProfileAction
  68 + buildConfiguration = "Profile"
  69 + shouldUseLaunchSchemeArgsEnv = "YES"
  70 + savedToolIdentifier = ""
  71 + useCustomWorkingDirectory = "NO"
  72 + debugDocumentVersioning = "YES">
  73 + <BuildableProductRunnable
  74 + runnableDebuggingMode = "0">
  75 + <BuildableReference
  76 + BuildableIdentifier = "primary"
  77 + BlueprintIdentifier = "97C146ED1CF9000F007C117D"
  78 + BuildableName = "Runner.app"
  79 + BlueprintName = "Runner"
  80 + ReferencedContainer = "container:Runner.xcodeproj">
  81 + </BuildableReference>
  82 + </BuildableProductRunnable>
  83 + </ProfileAction>
  84 + <AnalyzeAction
  85 + buildConfiguration = "Debug">
  86 + </AnalyzeAction>
  87 + <ArchiveAction
  88 + buildConfiguration = "Release"
  89 + revealArchiveInOrganizer = "YES">
  90 + </ArchiveAction>
  91 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
  1 +#import <Flutter/Flutter.h>
  2 +#import <UIKit/UIKit.h>
  3 +
  4 +@interface AppDelegate : FlutterAppDelegate
  5 +
  6 +@end
  1 +#import "AppDelegate.h"
  2 +#import "GeneratedPluginRegistrant.h"
  3 +
  4 +@implementation AppDelegate
  5 +
  6 +- (BOOL)application:(UIApplication *)application
  7 + didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  8 + [GeneratedPluginRegistrant registerWithRegistry:self];
  9 + // Override point for customization after application launch.
  10 + return [super application:application didFinishLaunchingWithOptions:launchOptions];
  11 +}
  12 +
  13 +@end
  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 +}
  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 +}
  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.
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--View Controller-->
  9 + <scene sceneID="EHf-IW-A2E">
  10 + <objects>
  11 + <viewController id="01J-lp-oVM" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
  14 + <viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
  17 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  18 + <subviews>
  19 + <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
  20 + </imageView>
  21 + </subviews>
  22 + <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
  23 + <constraints>
  24 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
  25 + <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
  26 + </constraints>
  27 + </view>
  28 + </viewController>
  29 + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
  30 + </objects>
  31 + <point key="canvasLocation" x="53" y="375"/>
  32 + </scene>
  33 + </scenes>
  34 + <resources>
  35 + <image name="LaunchImage" width="168" height="185"/>
  36 + </resources>
  37 +</document>
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
  3 + <dependencies>
  4 + <deployment identifier="iOS"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
  6 + </dependencies>
  7 + <scenes>
  8 + <!--Flutter View Controller-->
  9 + <scene sceneID="tne-QT-ifu">
  10 + <objects>
  11 + <viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
  12 + <layoutGuides>
  13 + <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
  14 + <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
  15 + </layoutGuides>
  16 + <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
  17 + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
  18 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
  19 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
  20 + </view>
  21 + </viewController>
  22 + <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
  23 + </objects>
  24 + </scene>
  25 + </scenes>
  26 +</document>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>$(EXECUTABLE_NAME)</string>
  9 + <key>CFBundleIdentifier</key>
  10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  11 + <key>CFBundleInfoDictionaryVersion</key>
  12 + <string>6.0</string>
  13 + <key>CFBundleName</key>
  14 + <string>sendsms_example</string>
  15 + <key>CFBundlePackageType</key>
  16 + <string>APPL</string>
  17 + <key>CFBundleShortVersionString</key>
  18 + <string>$(FLUTTER_BUILD_NAME)</string>
  19 + <key>CFBundleSignature</key>
  20 + <string>????</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>$(FLUTTER_BUILD_NUMBER)</string>
  23 + <key>LSRequiresIPhoneOS</key>
  24 + <true/>
  25 + <key>UILaunchStoryboardName</key>
  26 + <string>LaunchScreen</string>
  27 + <key>UIMainStoryboardFile</key>
  28 + <string>Main</string>
  29 + <key>UISupportedInterfaceOrientations</key>
  30 + <array>
  31 + <string>UIInterfaceOrientationPortrait</string>
  32 + <string>UIInterfaceOrientationLandscapeLeft</string>
  33 + <string>UIInterfaceOrientationLandscapeRight</string>
  34 + </array>
  35 + <key>UISupportedInterfaceOrientations~ipad</key>
  36 + <array>
  37 + <string>UIInterfaceOrientationPortrait</string>
  38 + <string>UIInterfaceOrientationPortraitUpsideDown</string>
  39 + <string>UIInterfaceOrientationLandscapeLeft</string>
  40 + <string>UIInterfaceOrientationLandscapeRight</string>
  41 + </array>
  42 + <key>UIViewControllerBasedStatusBarAppearance</key>
  43 + <false/>
  44 +</dict>
  45 +</plist>
  1 +#import <Flutter/Flutter.h>
  2 +#import <UIKit/UIKit.h>
  3 +#import "AppDelegate.h"
  4 +
  5 +int main(int argc, char* argv[]) {
  6 + @autoreleasepool {
  7 + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
  8 + }
  9 +}
  1 +import 'package:flutter/material.dart';
  2 +import 'package:sendsms/sendsms.dart';
  3 +
  4 +void main() => runApp(MyApp());
  5 +
  6 +class MyApp extends StatefulWidget {
  7 + @override
  8 + _MyAppState createState() => _MyAppState();
  9 +}
  10 +
  11 +class _MyAppState extends State<MyApp> {
  12 + @override
  13 + void initState() {
  14 + super.initState();
  15 + }
  16 +
  17 + @override
  18 + Widget build(BuildContext context) {
  19 + return MaterialApp(
  20 + home: Scaffold(
  21 + appBar: AppBar(
  22 + centerTitle: true,
  23 + title: const Text('Envio SMS desde la aplicación'),
  24 + ),
  25 + body: Container(
  26 + padding: EdgeInsets.all(15),
  27 + width: double.infinity,
  28 + child: RaisedButton(
  29 + child: Text("Enviar SMS"),
  30 + onPressed: () async {
  31 + String phoneNumber = "+593992696250";
  32 + String message = "test";
  33 +
  34 + await Sendsms.onGetPermission();
  35 +
  36 + if (await Sendsms.hasPermission()) {
  37 + await Sendsms.onSendSMS(phoneNumber, message);
  38 + }
  39 + },
  40 + ),
  41 + ),
  42 + ),
  43 + );
  44 + }
  45 +}
  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.flutter-io.cn"
  9 + source: hosted
  10 + version: "2.5.0"
  11 + boolean_selector:
  12 + dependency: transitive
  13 + description:
  14 + name: boolean_selector
  15 + url: "https://pub.flutter-io.cn"
  16 + source: hosted
  17 + version: "2.1.0"
  18 + characters:
  19 + dependency: transitive
  20 + description:
  21 + name: characters
  22 + url: "https://pub.flutter-io.cn"
  23 + source: hosted
  24 + version: "1.1.0"
  25 + charcode:
  26 + dependency: transitive
  27 + description:
  28 + name: charcode
  29 + url: "https://pub.flutter-io.cn"
  30 + source: hosted
  31 + version: "1.2.0"
  32 + clock:
  33 + dependency: transitive
  34 + description:
  35 + name: clock
  36 + url: "https://pub.flutter-io.cn"
  37 + source: hosted
  38 + version: "1.1.0"
  39 + collection:
  40 + dependency: transitive
  41 + description:
  42 + name: collection
  43 + url: "https://pub.flutter-io.cn"
  44 + source: hosted
  45 + version: "1.15.0"
  46 + cupertino_icons:
  47 + dependency: "direct main"
  48 + description:
  49 + name: cupertino_icons
  50 + url: "https://pub.flutter-io.cn"
  51 + source: hosted
  52 + version: "0.1.3"
  53 + fake_async:
  54 + dependency: transitive
  55 + description:
  56 + name: fake_async
  57 + url: "https://pub.flutter-io.cn"
  58 + source: hosted
  59 + version: "1.2.0"
  60 + flutter:
  61 + dependency: "direct main"
  62 + description: flutter
  63 + source: sdk
  64 + version: "0.0.0"
  65 + flutter_test:
  66 + dependency: "direct dev"
  67 + description: flutter
  68 + source: sdk
  69 + version: "0.0.0"
  70 + matcher:
  71 + dependency: transitive
  72 + description:
  73 + name: matcher
  74 + url: "https://pub.flutter-io.cn"
  75 + source: hosted
  76 + version: "0.12.10"
  77 + meta:
  78 + dependency: transitive
  79 + description:
  80 + name: meta
  81 + url: "https://pub.flutter-io.cn"
  82 + source: hosted
  83 + version: "1.3.0"
  84 + path:
  85 + dependency: transitive
  86 + description:
  87 + name: path
  88 + url: "https://pub.flutter-io.cn"
  89 + source: hosted
  90 + version: "1.8.0"
  91 + sendsms:
  92 + dependency: "direct dev"
  93 + description:
  94 + path: ".."
  95 + relative: true
  96 + source: path
  97 + version: "1.0.3"
  98 + sky_engine:
  99 + dependency: transitive
  100 + description: flutter
  101 + source: sdk
  102 + version: "0.0.99"
  103 + source_span:
  104 + dependency: transitive
  105 + description:
  106 + name: source_span
  107 + url: "https://pub.flutter-io.cn"
  108 + source: hosted
  109 + version: "1.8.0"
  110 + stack_trace:
  111 + dependency: transitive
  112 + description:
  113 + name: stack_trace
  114 + url: "https://pub.flutter-io.cn"
  115 + source: hosted
  116 + version: "1.10.0"
  117 + stream_channel:
  118 + dependency: transitive
  119 + description:
  120 + name: stream_channel
  121 + url: "https://pub.flutter-io.cn"
  122 + source: hosted
  123 + version: "2.1.0"
  124 + string_scanner:
  125 + dependency: transitive
  126 + description:
  127 + name: string_scanner
  128 + url: "https://pub.flutter-io.cn"
  129 + source: hosted
  130 + version: "1.1.0"
  131 + term_glyph:
  132 + dependency: transitive
  133 + description:
  134 + name: term_glyph
  135 + url: "https://pub.flutter-io.cn"
  136 + source: hosted
  137 + version: "1.2.0"
  138 + test_api:
  139 + dependency: transitive
  140 + description:
  141 + name: test_api
  142 + url: "https://pub.flutter-io.cn"
  143 + source: hosted
  144 + version: "0.2.19"
  145 + typed_data:
  146 + dependency: transitive
  147 + description:
  148 + name: typed_data
  149 + url: "https://pub.flutter-io.cn"
  150 + source: hosted
  151 + version: "1.3.0"
  152 + vector_math:
  153 + dependency: transitive
  154 + description:
  155 + name: vector_math
  156 + url: "https://pub.flutter-io.cn"
  157 + source: hosted
  158 + version: "2.1.0"
  159 +sdks:
  160 + dart: ">=2.12.0-0.0 <3.0.0"
  1 +name: sendsms_example
  2 +description: Demonstrates how to use the sendsms plugin.
  3 +publish_to: 'none'
  4 +
  5 +environment:
  6 + sdk: ">=2.1.0 <3.0.0"
  7 +
  8 +dependencies:
  9 + flutter:
  10 + sdk: flutter
  11 +
  12 + # The following adds the Cupertino Icons font to your application.
  13 + # Use with the CupertinoIcons class for iOS style icons.
  14 + cupertino_icons: ^0.1.2
  15 +
  16 +dev_dependencies:
  17 + flutter_test:
  18 + sdk: flutter
  19 +
  20 + sendsms:
  21 + path: ../
  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 +
  29 + # The following line ensures that the Material Icons font is
  30 + # included with your application, so that you can use the icons in
  31 + # the material Icons class.
  32 + uses-material-design: true
  33 +
  34 + # To add assets to your application, add an assets section, like this:
  35 + # assets:
  36 + # - images/a_dot_burr.jpeg
  37 + # - images/a_dot_ham.jpeg
  38 +
  39 + # An image asset can refer to one or more resolution-specific "variants", see
  40 + # https://flutter.dev/assets-and-images/#resolution-aware.
  41 +
  42 + # For details regarding adding assets from package dependencies, see
  43 + # https://flutter.dev/assets-and-images/#from-packages
  44 +
  45 + # To add custom fonts to your application, add a fonts section here,
  46 + # in this "flutter" section. Each entry in this list should have a
  47 + # "family" key with the font family name, and a "fonts" key with a
  48 + # list giving the asset and other descriptors for the font. For
  49 + # example:
  50 + # fonts:
  51 + # - family: Schyler
  52 + # fonts:
  53 + # - asset: fonts/Schyler-Regular.ttf
  54 + # - asset: fonts/Schyler-Italic.ttf
  55 + # style: italic
  56 + # - family: Trajan Pro
  57 + # fonts:
  58 + # - asset: fonts/TrajanPro.ttf
  59 + # - asset: fonts/TrajanPro_Bold.ttf
  60 + # weight: 700
  61 + #
  62 + # For details regarding fonts from package dependencies,
  63 + # see https://flutter.dev/custom-fonts/#from-packages
  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 '../lib/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) =>
  22 + widget is Text && widget.data.startsWith('Running on:'),
  23 + ),
  24 + findsOneWidget,
  25 + );
  26 + });
  27 +}
  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
  1 +#import <Flutter/Flutter.h>
  2 +
  3 +@interface SendsmsPlugin : NSObject<FlutterPlugin>
  4 +@end
  1 +#import "SendsmsPlugin.h"
  2 +
  3 +@implementation SendsmsPlugin
  4 ++ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
  5 + FlutterMethodChannel* channel = [FlutterMethodChannel
  6 + methodChannelWithName:@"sendsms"
  7 + binaryMessenger:[registrar messenger]];
  8 + SendsmsPlugin* instance = [[SendsmsPlugin alloc] init];
  9 + [registrar addMethodCallDelegate:instance channel:channel];
  10 +}
  11 +
  12 +- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
  13 + if ([@"getPlatformVersion" isEqualToString:call.method]) {
  14 + result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);
  15 + }else if([@"sendSMS" isEqualToString:call.method]){
  16 + NSString *phone = call.arguments[@"phoneNumber"];
  17 + NSString *content = call.arguments[@"message"];
  18 + // 短信号码可以为空
  19 + NSString *urlStr = [NSString stringWithFormat:@"sms://%@&body=%@", phone, content];
  20 + // 对中文进行编码 不进行中文编码,可能到时短信内容为null
  21 + urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
  22 + NSURL *url = [NSURL URLWithString:urlStr];
  23 +
  24 + if (@available(iOS 10.0, *)) {
  25 + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
  26 + } else {
  27 + [[UIApplication sharedApplication] openURL:url];
  28 + }
  29 + }else if([@"getPermission" isEqualToString:call.method]) {
  30 +
  31 + // result(true);
  32 + }else if([@"hasPermission" isEqualToString:call.method]){
  33 + // result(true);
  34 + }
  35 + else {
  36 + result(FlutterMethodNotImplemented);
  37 + }
  38 +}
  39 +
  40 +@end
  1 +#
  2 +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
  3 +# Run `pod lib lint sendsms.podspec' to validate before publishing.
  4 +#
  5 +Pod::Spec.new do |s|
  6 + s.name = 'sendsms'
  7 + s.version = '0.0.1'
  8 + s.summary = 'Envio SMS desde la aplicación'
  9 + s.description = <<-DESC
  10 +Envio SMS desde la aplicación
  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.public_header_files = 'Classes/**/*.h'
  18 + s.dependency 'Flutter'
  19 + s.platform = :ios, '8.0'
  20 +
  21 + # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
  22 + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
  23 +end
  1 +import 'dart:async';
  2 +
  3 +import 'package:flutter/services.dart';
  4 +
  5 +class Sendsms {
  6 + static const MethodChannel _channel = const MethodChannel('sendsms');
  7 +
  8 + ///
  9 + /// Envia Mensaje de texto desde la aplicacion
  10 + ///
  11 + /// @param phoneNumber Número a enviar.
  12 + /// @param message Mensaje de texto.
  13 + ///
  14 + static Future<bool> onSendSMS(String phoneNumber, String message) async {
  15 + Map<String, String> params = <String, String>{
  16 + "phoneNumber": phoneNumber,
  17 + "message": message
  18 + };
  19 + return await _channel.invokeMethod('sendSMS', params);
  20 + }
  21 +
  22 + static Future<bool> onGetPermission() async {
  23 + return await _channel.invokeMethod("getPermission");
  24 + }
  25 +
  26 + static Future<bool> hasPermission() async {
  27 + return await _channel.invokeMethod("hasPermission");
  28 + }
  29 +}
  1 +# Generated by pub
  2 +# See https://dart.dev/tools/pub/glossary#lockfile
  3 +packages:
  4 + characters:
  5 + dependency: transitive
  6 + description:
  7 + name: characters
  8 + url: "https://pub.flutter-io.cn"
  9 + source: hosted
  10 + version: "1.1.0"
  11 + collection:
  12 + dependency: transitive
  13 + description:
  14 + name: collection
  15 + url: "https://pub.flutter-io.cn"
  16 + source: hosted
  17 + version: "1.15.0"
  18 + flutter:
  19 + dependency: "direct main"
  20 + description: flutter
  21 + source: sdk
  22 + version: "0.0.0"
  23 + meta:
  24 + dependency: transitive
  25 + description:
  26 + name: meta
  27 + url: "https://pub.flutter-io.cn"
  28 + source: hosted
  29 + version: "1.3.0"
  30 + sky_engine:
  31 + dependency: transitive
  32 + description: flutter
  33 + source: sdk
  34 + version: "0.0.99"
  35 + typed_data:
  36 + dependency: transitive
  37 + description:
  38 + name: typed_data
  39 + url: "https://pub.flutter-io.cn"
  40 + source: hosted
  41 + version: "1.3.0"
  42 + vector_math:
  43 + dependency: transitive
  44 + description:
  45 + name: vector_math
  46 + url: "https://pub.flutter-io.cn"
  47 + source: hosted
  48 + version: "2.1.0"
  49 +sdks:
  50 + dart: ">=2.12.0-0 <3.0.0"
  1 +name: sendsms
  2 +description: Permite el envio SMS sin salir desde la aplicacion utilizando el permiso de envio SMS
  3 +version: 1.0.3
  4 +homepage: https://github.com/Mauricio07/SendSMS
  5 +
  6 +environment:
  7 + sdk: ">=2.1.0 <3.0.0"
  8 +
  9 +dependencies:
  10 + flutter:
  11 + sdk: flutter
  12 +
  13 +# For information on the generic Dart part of this file, see the
  14 +# following page: https://dart.dev/tools/pub/pubspec
  15 +
  16 +# The following section is specific to Flutter.
  17 +flutter:
  18 + # This section identifies this Flutter project as a plugin project.
  19 + # The androidPackage and pluginClass identifiers should not ordinarily
  20 + # be modified. They are used by the tooling to maintain consistency when
  21 + # adding or updating assets for this project.
  22 + plugin:
  23 + androidPackage: com.emsoluciones.app.sendsms
  24 + pluginClass: SendsmsPlugin
  25 +
@@ -821,6 +821,13 @@ packages: @@ -821,6 +821,13 @@ packages:
821 url: "https://pub.flutter-io.cn" 821 url: "https://pub.flutter-io.cn"
822 source: hosted 822 source: hosted
823 version: "0.1.10" 823 version: "0.1.10"
  824 + sendsms:
  825 + dependency: "direct main"
  826 + description:
  827 + path: "library/sendsms-1.0.3"
  828 + relative: true
  829 + source: path
  830 + version: "1.0.3"
824 shared_preferences: 831 shared_preferences:
825 dependency: "direct main" 832 dependency: "direct main"
826 description: 833 description:
@@ -120,6 +120,8 @@ dependencies: @@ -120,6 +120,8 @@ dependencies:
120 lpinyin: ^2.0.3 120 lpinyin: ^2.0.3
121 #图片压缩 121 #图片压缩
122 flutter_native_image: ^0.0.6+1 122 flutter_native_image: ^0.0.6+1
  123 + sendsms:
  124 + path: library/sendsms-1.0.3
123 125
124 126
125 127