Android camera fixes, purchase screen fixes

This commit is contained in:
Ivan Murashov
2018-05-20 12:56:01 +03:00
parent be4f2dc7cf
commit 23a3bf1a9c
18 changed files with 659 additions and 285 deletions

View File

@@ -12,6 +12,7 @@ if (flutterRoot == null) {
} }
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android { android {
@@ -24,7 +25,7 @@ android {
defaultConfig { defaultConfig {
targetSdkVersion 27 targetSdkVersion 27
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" minSdkVersion 16
applicationId "com.dinect.checker" applicationId "com.dinect.checker"
} }
@@ -35,13 +36,13 @@ android {
} }
release { release {
signingConfig signingConfigs.debug signingConfig signingConfigs.debug
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
} }
flavorDimensions "checker" flavorDimensions "checker"
// Не смог разобраться, как коомбинировать flavors в flutter при запуске
productFlavors { productFlavors {
dinect { dinect {
@@ -174,16 +175,9 @@ android {
buildConfigField "boolean", "showBonus", "true" buildConfigField "boolean", "showBonus", "true"
} }
} }
compileOptions {
sourceSets { targetCompatibility 1.8
sourceCompatibility 1.8
main.jniLibs.srcDir 'jniLibs'
pip {
res.srcDirs = ['src/pip/res']
manifest.srcFile 'src/pip/AndroidManifest.xml'
}
} }
} }
@@ -192,9 +186,17 @@ flutter {
} }
dependencies { dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:27.1.0' implementation 'com.android.support:appcompat-v7:27.1.1'
compile 'com.squareup.okhttp3:okhttp:3.8.1' implementation 'com.android.support:recyclerview-v7:27.1.1'
compile 'com.squareup.okio:okio:1.13.0' implementation 'com.android.support:support-v4:27.1.1'
compile 'me.dm7.barcodescanner:zxing:1.9.8' implementation 'com.android.support:support-media-compat:27.1.1'
implementation 'com.squareup.okhttp3:okhttp:3.9.0'
implementation 'com.squareup.okio:okio:1.13.0'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
repositories {
mavenCentral()
} }

View File

@@ -4,10 +4,6 @@
android:versionCode="13" android:versionCode="13"
android:versionName="1.1.18"> android:versionName="1.1.18">
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="21"/>
<!-- The INTERNET permission is required for development. Specifically, <!-- The INTERNET permission is required for development. Specifically,
flutter needs it to communicate with the running application flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc. to allow setting breakpoints, to provide hot reload, etc.
@@ -31,7 +27,7 @@
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@android:style/Theme.Light.NoTitleBar" android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
@@ -39,14 +35,10 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name=".zbar.CameraActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme"/>
<activity <activity
android:name=".zxing.ScannerActivity" android:name=".ScannerActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/AppTheme"/> android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
</application> </application>
</manifest> </manifest>

View File

@@ -1,48 +1,41 @@
package com.dinect.checker; package com.dinect.checker;
import android.Manifest;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.widget.Toast; import android.widget.Toast;
import android.util.Log;
import com.dinect.checker.zbar.CameraActivity; import java.util.ArrayList;
import com.dinect.checker.zxing.ScannerActivity; import java.util.Arrays;
import java.util.Locale;
import java.util.Map;
import io.flutter.app.FlutterActivity; import io.flutter.app.FlutterActivity;
import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugins.GeneratedPluginRegistrant; import io.flutter.plugins.GeneratedPluginRegistrant;
import android.support.v4.app.Fragment;
import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.content.ContextCompat;
import android.support.v4.app.ActivityCompat;
import android.content.pm.PackageInfo;
import java.util.*;
public class MainActivity extends FlutterActivity { public class MainActivity extends FlutterActivity {
private static final int START_SCANNER_REQUEST_CODE = 2017; private static final int START_SCANNER_REQUEST_CODE = 2017;
private static final String FLUTTER_CHANNEL_NAME = "com.dinect.checker/instance_id"; private static final String FLUTTER_CHANNEL_NAME = "com.dinect.checker/instance_id";
private static final String ERROR_MESSAGE = "message";
static final String PREF_API_URL = "url"; static final String PREF_API_URL = "url";
static final String PREF_APP_TOKEN = "appToken"; static final String PREF_APP_TOKEN = "appToken";
static final String PREF_POS_TOKEN = "token"; static final String PREF_POS_TOKEN = "token";
static final String PREF_APP_BAR_COLOR = "color"; static final String PREF_APP_BAR_COLOR = "color";
static final String SCANNER_BACKEND_KEY = "scanner_backend_idx";
static final int ZXING = 0;
static final int ZBAR = 1;
static final Class[] SCANNER_BACKEND = {
ScannerActivity.class,
CameraActivity.class,
};
private MethodChannel mChannel; private MethodChannel mChannel;
private Map mScannerArgs; private Map mScannerArgs;
@@ -51,13 +44,7 @@ public class MainActivity extends FlutterActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this); GeneratedPluginRegistrant.registerWith(this);
mChannel = new MethodChannel(getFlutterView(), FLUTTER_CHANNEL_NAME); mChannel = new MethodChannel(getFlutterView(), FLUTTER_CHANNEL_NAME);
mChannel.setMethodCallHandler( mChannel.setMethodCallHandler(this::callMethod);
new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, Result result) {
callMethod(call, result);
}
});
} }
private void callMethod(MethodCall call, Result result) { private void callMethod(MethodCall call, Result result) {
@@ -72,8 +59,7 @@ public class MainActivity extends FlutterActivity {
result.success(BuildConfig.currency); result.success(BuildConfig.currency);
break; break;
case "startScanner": case "startScanner":
mScannerArgs = call.arguments(); startScannerActivity(call);
startScannerActivity();
break; break;
case "isOnline": case "isOnline":
checkInternetConnection(result); checkInternetConnection(result);
@@ -97,7 +83,6 @@ public class MainActivity extends FlutterActivity {
result.success(BuildConfig.showBonus); result.success(BuildConfig.showBonus);
break; break;
case "finish": case "finish":
Log.d("kifio", call.method);
finish(); finish();
break; break;
case "getVersionName": case "getVersionName":
@@ -120,8 +105,7 @@ public class MainActivity extends FlutterActivity {
} }
private String getLanguage() { private String getLanguage() {
List<String> availableLanguages = Arrays.asList("ru", "en"); if (Arrays.asList("ru", "en").contains(Locale.getDefault().getLanguage())) {
if (availableLanguages.contains(Locale.getDefault().getLanguage())) {
return Locale.getDefault().getLanguage(); return Locale.getDefault().getLanguage();
} else { } else {
return BuildConfig.locale; return BuildConfig.locale;
@@ -129,9 +113,10 @@ public class MainActivity extends FlutterActivity {
} }
private void checkInternetConnection(Result result) { private void checkInternetConnection(Result result) {
boolean connected = Utils.isOnline(this); boolean connected = isOnline(this);
if (!connected) if (!connected) {
Toast.makeText(this, "Проверьте интернет соединение", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Проверьте интернет соединение", Toast.LENGTH_SHORT).show();
}
result.success(connected); result.success(connected);
} }
@@ -144,17 +129,27 @@ public class MainActivity extends FlutterActivity {
res.updateConfiguration(configuration, res.getDisplayMetrics()); res.updateConfiguration(configuration, res.getDisplayMetrics());
} }
private void startScannerActivity(MethodCall call) {
mScannerArgs = call.arguments();
startScannerActivity();
}
private void startScannerActivity() { private void startScannerActivity() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.CAMERA}, 101); != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 101);
} else { } else {
final int idx = getSharedPreferences("scanner", Context.MODE_PRIVATE).getInt( openScanner();
SCANNER_BACKEND_KEY, 0); }
Intent cameraIntent = new Intent(MainActivity.this, SCANNER_BACKEND[idx]); }
private void openScanner() {
Intent cameraIntent = new Intent(MainActivity.this, ScannerActivity.class);
for (Object key : mScannerArgs.keySet()) { for (Object key : mScannerArgs.keySet()) {
if (key.equals("color")) { if (key.equals("color")) {
cameraIntent.putExtra((String) key, Long.parseLong((String) mScannerArgs.get(key))); cameraIntent.putExtra((String) key,
Long.parseLong((String) mScannerArgs.get(key)));
} else { } else {
cameraIntent.putExtra((String) key, (String) mScannerArgs.get(key)); cameraIntent.putExtra((String) key, (String) mScannerArgs.get(key));
} }
@@ -163,17 +158,11 @@ public class MainActivity extends FlutterActivity {
setLocale((String) mScannerArgs.get("localeCode")); setLocale((String) mScannerArgs.get("localeCode"));
startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE); startActivityForResult(cameraIntent, START_SCANNER_REQUEST_CODE);
} }
}
@Override @Override
public void onRequestPermissionsResult(int requestCode, public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) { String permissions[], int[] grantResults) {
if (requestCode == 101) { openScanner();
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startScannerActivity();
}
}
} }
@Override @Override
@@ -182,7 +171,7 @@ public class MainActivity extends FlutterActivity {
if (resultCode == RESULT_CANCELED) { if (resultCode == RESULT_CANCELED) {
finish(); finish();
} else if (resultCode == RESULT_OK) { } else if (resultCode == RESULT_OK) {
if (data != null) { if (data != null && data.getExtras() != null) {
String user = data.getExtras().getString("user", null); String user = data.getExtras().getString("user", null);
if (user != null) { if (user != null) {
String card = data.getExtras().getString("card", null); String card = data.getExtras().getString("card", null);
@@ -207,51 +196,12 @@ public class MainActivity extends FlutterActivity {
} }
} }
public void getFlavor() { private static boolean isOnline(Context context) {
NetworkInfo netInfo = getConnectivityManager(context).getActiveNetworkInfo();
return netInfo != null && netInfo.isConnected();
} }
public void getCurrency() { private static ConnectivityManager getConnectivityManager(Context context) {
return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
public void getLocale() {
}
public void setUserLocale() {
}
public void startScanner() {
}
public void isOnline() {
}
public void getSupportPhone() {
}
public void getSupportUrl() {
}
public void getEndpoint() {
}
public void getAppToken() {
}
public void getVersionName() {
}
public void setStrings() {
} }
} }

View File

@@ -0,0 +1,383 @@
/*
* Copyright 2017 .
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.dinect.checker;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.Result;
import org.json.JSONArray;
import org.json.JSONException;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
/**
* Created by anonymous
*/
public class ScannerActivity extends AppCompatActivity implements
View.OnClickListener, ZXingScannerView.ResultHandler {
private final static String TAG = "Checker.ScannerActivity";
private static final int SCAN_INTERVAL_PERIOD = 500;
enum SearchType {
CARD,
PHONE_NUMBER
}
private ApiClient mClient;
private ImageView mButton;
private EditText mInputField;
private SearchType mSearchType;
private ZXingScannerView scannerView;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_zxing);
final String appToken = getIntent().getStringExtra(MainActivity.PREF_APP_TOKEN);
final String token = getIntent().getStringExtra(MainActivity.PREF_POS_TOKEN);
final String url = getIntent().getStringExtra(MainActivity.PREF_API_URL) + "/users/";
mClient = new ApiClient(url, appToken, token);
initToolbar(getIntent());
scannerView = new ZXingScannerView(this);
ViewGroup instructions = findViewById(R.id.instructions);
TextView text = (TextView) instructions.getChildAt(0);
text.setText(getIntent().getStringExtra("camera_instructions").replace("%s", BuildConfig.appTitle));
Button button = (Button) instructions.getChildAt(1);
button.setText(getIntent().getStringExtra("open_settings"));
button.setOnClickListener((v) ->
startActivityForResult(new Intent(Settings.ACTION_SETTINGS), 0));
}
@Override
public void onResume() {
super.onResume();
ViewGroup root = findViewById(R.id.zxingRoot);
int count = root.getChildCount();
if (root.getChildAt(count - 1).equals(scannerView)) {
scannerView.setResultHandler(this);
scannerView.startCamera();
} else if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
View instructions = findViewById(R.id.instructions);
if (instructions != null) {
root.removeView(instructions);
}
root.addView(scannerView);
scannerView.setResultHandler(this);
scannerView.startCamera();
}
}
@Override
public void onPause() {
super.onPause();
scannerView.stopCamera();
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
finish();
}
@Override
public void handleResult(Result raw) {
handleBarcode(raw.getText());
scannerView.postDelayed(() -> scannerView.resumeCameraPreview(ScannerActivity.this), SCAN_INTERVAL_PERIOD);
}
protected final void initToolbar(Intent intent) {
final Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setBackgroundColor((int) intent.getLongExtra(MainActivity.PREF_APP_BAR_COLOR, 0xffffff));
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setTitle(null);
actionBar.setDisplayHomeAsUpEnabled(false);
}
initManualInput();
initSwitchButton();
}
private void initSwitchButton() {
mButton = findViewById(R.id.cardPhoneButton);
mButton.setOnClickListener(this);
resetSearchType(SearchType.CARD, R.drawable.ic_card, "enter_manual");
}
private void resetSearchType(SearchType type, int iconId, String hintKey) {
mSearchType = type;
mButton.setBackgroundResource(iconId);
mInputField.setHint(getIntent().getStringExtra(hintKey));
}
@Override
public void onClick(View v) {
if (mSearchType == SearchType.CARD) {
resetSearchType(SearchType.PHONE_NUMBER, R.drawable.ic_phone, "enter_phone");
} else {
resetSearchType(SearchType.CARD, R.drawable.ic_card, "enter_manual");
}
}
private void initManualInput() {
mInputField = findViewById(R.id.manual_input);
mInputField.setOnEditorActionListener((v, actionId, event) -> {
handleBarcode(v.getText().toString());
return false;
});
if (BuildConfig.DEBUG) {
if ("autobonus".equals(BuildConfig.FLAVOR)) {
mInputField.setText("9990010009012057060904229");
} else if ("dinect_INT".equals(BuildConfig.FLAVOR)) {
mInputField.setText("4620011139016337050236302");
}
}
}
public void handleBarcode(final @NonNull String searchString) {
mClient.findUser(searchString, mSearchType, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handleFail(searchString);
}
@Override
public void onResponse(Call call, Response response) {
try {
ResponseBody body = response.body();
if (body != null) {
switch (response.code()) {
case 200:
final JSONArray users = new JSONArray(body.string());
if (users.length() > 0) {
handleSuccess(searchString, users.get(0).toString());
} else {
handleFail(searchString);
}
break;
case 204:
handleFail(searchString);
break;
}
}
} catch (final IOException | JSONException e) {
Log.e(TAG, e.getMessage(), e);
handleFail(searchString);
}
}
});
}
protected final void handleSuccess(final String card, final String user) {
runOnUiThread(() -> {
setResult(RESULT_OK, new Intent().putExtra("user", user).putExtra("card", card));
finish();
});
}
protected final void handleFail(final String searchString) {
runOnUiThread(() -> {
String message = String.format(getIntent().getStringExtra("identifier_not_found"), searchString)
+ ".\n"
+ String.format(getIntent().getStringExtra("error_contact_support"), BuildConfig.supportPhone);
Toast.makeText(ScannerActivity.this, message, Toast.LENGTH_SHORT).show();
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem settings = menu.findItem(R.id.settings);
settings.setIcon(getResources().getDrawable(R.drawable.settings));
settings.setTitle(getIntent().getStringExtra("settings"));
MenuItem faq = menu.findItem(R.id.faq);
faq.setIcon(getResources().getDrawable(R.drawable.help));
faq.setTitle(getIntent().getStringExtra("faq"));
MenuItem exit = menu.findItem(R.id.exit);
exit.setIcon(getResources().getDrawable(R.drawable.exit));
exit.setTitle(getIntent().getStringExtra("exit"));
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.settings) {
final Intent intent = new Intent();
intent.putExtra("item", "settings");
setResult(RESULT_OK, intent);
finish();
return true;
} else if (item.getItemId() == R.id.exit) {
exit();
return true;
} else if (item.getItemId() == R.id.faq) {
final Intent intent = new Intent();
intent.putExtra("item", "faq");
setResult(RESULT_OK, intent);
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
void exit() {
final Intent intent = new Intent();
intent.putExtra("item", "exit");
setResult(RESULT_OK, intent);
finish();
}
private static class ApiClient {
private static final int TIMEOUT = 3;
private OkHttpClient mHttp;
private String mEndpoint;
private ApiClient(final String url, final @NonNull String appToken, final @NonNull String token) {
mEndpoint = url;
mHttp = new OkHttpClient().
newBuilder()
.connectTimeout(TIMEOUT, TimeUnit.SECONDS)
.readTimeout(TIMEOUT, TimeUnit.SECONDS)
.writeTimeout(TIMEOUT, TimeUnit.SECONDS)
.addInterceptor(new DinectAuthorizationInterceptor(appToken, token, "checker/0.1", true))
.build();
}
private void findUser(String searchString, ScannerActivity.SearchType searchType, Callback callback) {
final Request.Builder requestBuilder = new Request.Builder();
final HttpUrl url = HttpUrl.parse(mEndpoint);
if (url != null) {
HttpUrl.Builder httpBuilder = url.newBuilder();
switch (searchType) {
case CARD:
httpBuilder.addQueryParameter("auto", searchString);
break;
case PHONE_NUMBER:
httpBuilder.addQueryParameter("phone", searchString);
break;
}
mHttp.newCall(requestBuilder.url(httpBuilder.build()).build()).enqueue(callback);
}
}
}
private static class DinectAuthorizationInterceptor implements Interceptor {
private final String token;
private final String appToken;
private final String dmAuthorization;
private final String authorization;
private final String userAgent;
private final boolean useAuthHeader;
DinectAuthorizationInterceptor(final String appToken, final String token, final String clientInfo, final boolean useAuthHeader) {
this.appToken = appToken;
this.token = token;
this.useAuthHeader = useAuthHeader;
userAgent = clientInfo;
dmAuthorization = "dmapptoken " + appToken;
authorization = "dmtoken " + token;
}
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
final Request originalRequest = chain.request();
final HttpUrl originalUrl = originalRequest.url();
final Request.Builder requestBuilder = originalRequest.newBuilder();
HttpUrl url = originalUrl;
Headers headers;
headers = originalRequest.headers();
final Headers.Builder headersBuilder = headers.newBuilder();
headersBuilder.set("User-Agent", userAgent);
if (useAuthHeader) {
headersBuilder.set("DM-Authorization", dmAuthorization);
if (null != token) {
headersBuilder.set("Authorization", authorization);
}
headers = headersBuilder.build();
} else {
final HttpUrl.Builder urlBuilder = originalRequest.url().newBuilder();
urlBuilder.addQueryParameter("_dmapptoken", appToken);
urlBuilder.addQueryParameter("user_agent", userAgent);
if (null != token) {
urlBuilder.addQueryParameter("_dmtoken", token);
}
url = urlBuilder.build();
}
final Request request = requestBuilder.url(url).headers(headers).build();
return chain.proceed(request);
}
}
}

View File

@@ -1,18 +1,36 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/zxingRoot" android:id="@+id/zxingRoot"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white"> android:background="@android:color/white">
<include layout="@layout/v_custom_toolbar" /> <include layout="@layout/v_custom_toolbar" />
<View <LinearLayout
android:id="@+id/zxingToolbarShadow" android:id="@+id/instructions"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="4dp" android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize" android:gravity="center"
android:background="@drawable/shadow_bottom" /> android:layout_marginTop="72dp"
android:orientation="vertical">
</FrameLayout> <TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Для корректной работы приложения необходимо открыть Настройки, найти пункт Приложения, выбрать Autobonus, нажать на кнопку Разрешения, поставить галочку напротив слова Камера" />
<Button
android:id="@+id/openSettings"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="center"
android:text="Открыть настройки" />
</LinearLayout>
</LinearLayout>

View File

@@ -1,20 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:orientation="vertical"
android:minHeight="?attr/actionBarSize" android:minHeight="?attr/actionBarSize"
android:orientation="vertical"
app:titleTextColor="@android:color/white"> app:titleTextColor="@android:color/white">
<com.dinect.checker.StatedImageButton <ImageView
android:id="@+id/cardPhoneButton" android:id="@+id/cardPhoneButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_marginRight="12dp" android:layout_height="wrap_content"
android:layout_height="wrap_content" /> android:layout_marginRight="12dp" />
<EditText <EditText
android:id="@+id/manual_input" android:id="@+id/manual_input"
@@ -26,4 +25,10 @@
android:textColor="@android:color/white" android:textColor="@android:color/white"
android:textColorHint="@android:color/white" /> android:textColorHint="@android:color/white" />
<View
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_marginTop="?attr/actionBarSize"
android:background="@drawable/shadow_bottom" />
</android.support.v7.widget.Toolbar> </android.support.v7.widget.Toolbar>

View File

@@ -1,11 +1,13 @@
buildscript { buildscript {
ext.kotlin_version = '1.2.40'
repositories { repositories {
jcenter() jcenter()
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.android.tools.build:gradle:3.1.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }
@@ -13,9 +15,6 @@ allprojects {
repositories { repositories {
jcenter() jcenter()
google() google()
maven {
url "https://maven.google.com"
}
} }
} }

View File

@@ -120,4 +120,13 @@ To improve barcode scanning quality, adjust the distance between the camera and
<string name="joys_minus">Joys was charged</string> <string name="joys_minus">Joys was charged</string>
<string name="joys_hint">Joys to charge</string> <string name="joys_hint">Joys to charge</string>
<string name="phone">Phone</string> <string name="phone">Phone</string>
<string name="camera_instructions">
Open settings.
Find Applications.
In app list select %s.
On application page select Permissions.
Set on switch on Camera
Go back to %s.
</string>
<string name="open_settings">Open settings</string>
</resources> </resources>

View File

@@ -116,4 +116,13 @@ Hay que poner el dibujo del codigo de tarjeta en cámara del escanear totalmente
<string name="joys_minus">Joys fueron insumido</string> <string name="joys_minus">Joys fueron insumido</string>
<string name="joys_hint">¿Cuántas Joys hay que insumir?</string> <string name="joys_hint">¿Cuántas Joys hay que insumir?</string>
<string name="phone">Número de teléfono</string> <string name="phone">Número de teléfono</string>
<string name="camera_instructions">
Abre las configuraciones
Encuentra las aplicaciones
En la lista de app elige %s
En la pagina de aplicación elige Permisos
Pon check box por la cámara
Vuelve a %s
</string>
<string name="open_settings">Abre las configuraciones</string>
</resources> </resources>

View File

@@ -119,4 +119,13 @@
<string name="joys_minus">Joys было списано</string> <string name="joys_minus">Joys было списано</string>
<string name="joys_hint">Joys списать</string> <string name="joys_hint">Joys списать</string>
<string name="phone">Телефон</string> <string name="phone">Телефон</string>
<string name="camera_instructions">
Откройте Настройки.
Найдите пункт Приложения.
В появившемся списке выберите %s.
На открывшейся странице выберите Разрешения.
Включите камеру
Вернитесь к приложению %s.
</string>
<string name="open_settings">Открыть настройки</string>
</resources> </resources>

View File

@@ -121,4 +121,13 @@
<string name="joys_minus">Joys списано</string> <string name="joys_minus">Joys списано</string>
<string name="joys_hint">Скільки Joys списати?</string> <string name="joys_hint">Скільки Joys списати?</string>
<string name="phone">Телефон</string> <string name="phone">Телефон</string>
<string name="camera_instructions">
Відкрийте Налаштування.
Знайдіть пункт Програми.
У списку виберіть %s.
На сторінці, виберіть рядок Дозволи.
Увімкнути камеру
Поверніться до додатка %s.
</string>
<string name="open_settings">Відкрити параметри</string>
</resources> </resources>

View File

@@ -8,6 +8,8 @@ end
target Runner do target Runner do
# Pods for Runner # Pods for Runner
pod 'DropDown'
use_frameworks!
# Flutter Pods # Flutter Pods
pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR'] pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR']
@@ -28,7 +30,9 @@ target Runner do
end end
end end
target Dinect do target Dinect do
# Pods for Runner # Pods for Dinect
pod 'DropDown'
use_frameworks!
# Flutter Pods # Flutter Pods
pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR'] pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR']
@@ -49,7 +53,9 @@ target Dinect do
end end
end end
target Crypto do target Crypto do
# Pods for Runner # Pods for Crypto
pod 'DropDown'
use_frameworks!
# Flutter Pods # Flutter Pods
pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR'] pod 'Flutter', :path => ENV['FLUTTER_FRAMEWORK_DIR']

View File

@@ -1,4 +1,5 @@
PODS: PODS:
- DropDown (2.3.1)
- Flutter (1.0.0) - Flutter (1.0.0)
- FMDB (2.7.2): - FMDB (2.7.2):
- FMDB/standard (= 2.7.2) - FMDB/standard (= 2.7.2)
@@ -15,23 +16,25 @@ PODS:
- ZXingObjC/All (3.2.2) - ZXingObjC/All (3.2.2)
DEPENDENCIES: DEPENDENCIES:
- Flutter (from `/Users/dinect/projects/flutter/bin/cache/artifacts/engine/ios-release`) - DropDown
- image_picker (from `/Users/dinect/.pub-cache/hosted/pub.dartlang.org/image_picker-0.1.5/ios`) - Flutter (from `/Users/kifio/flutter/bin/cache/artifacts/engine/ios`)
- path_provider (from `/Users/dinect/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios`) - image_picker (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/image_picker-0.4.1/ios`)
- sqflite (from `/Users/dinect/.pub-cache/hosted/pub.dartlang.org/sqflite-0.8.4/ios`) - path_provider (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios`)
- sqflite (from `/Users/kifio/.pub-cache/hosted/pub.dartlang.org/sqflite-0.8.9/ios`)
- ZXingObjC (~> 3.2.2) - ZXingObjC (~> 3.2.2)
EXTERNAL SOURCES: EXTERNAL SOURCES:
Flutter: Flutter:
:path: /Users/dinect/projects/flutter/bin/cache/artifacts/engine/ios-release :path: /Users/kifio/flutter/bin/cache/artifacts/engine/ios
image_picker: image_picker:
:path: /Users/dinect/.pub-cache/hosted/pub.dartlang.org/image_picker-0.1.5/ios :path: /Users/kifio/.pub-cache/hosted/pub.dartlang.org/image_picker-0.4.1/ios
path_provider: path_provider:
:path: /Users/dinect/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios :path: /Users/kifio/.pub-cache/hosted/pub.dartlang.org/path_provider-0.2.2/ios
sqflite: sqflite:
:path: /Users/dinect/.pub-cache/hosted/pub.dartlang.org/sqflite-0.8.4/ios :path: /Users/kifio/.pub-cache/hosted/pub.dartlang.org/sqflite-0.8.9/ios
SPEC CHECKSUMS: SPEC CHECKSUMS:
DropDown: 20499c7b2731b0d21609af924e47c7677a2be50d
Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296 Flutter: 9d0fac939486c9aba2809b7982dfdbb47a7b0296
FMDB: 6198a90e7b6900cfc046e6bc0ef6ebb7be9236aa FMDB: 6198a90e7b6900cfc046e6bc0ef6ebb7be9236aa
image_picker: ee00aab0487cedc80a304085219503cc6d0f2e22 image_picker: ee00aab0487cedc80a304085219503cc6d0f2e22
@@ -39,6 +42,6 @@ SPEC CHECKSUMS:
sqflite: d1612813fa7db7c667bed9f1d1b508deffc56999 sqflite: d1612813fa7db7c667bed9f1d1b508deffc56999
ZXingObjC: 2c95a0dc52daac69b23ec78fad8fa2fec05f8981 ZXingObjC: 2c95a0dc52daac69b23ec78fad8fa2fec05f8981
PODFILE CHECKSUM: bc84f52b27b79dc608eec3537282fdff2347d9b4 PODFILE CHECKSUM: fb0878732874759a90764b55aa8df21a11e17dea
COCOAPODS: 1.4.0 COCOAPODS: 1.4.0

View File

@@ -7,8 +7,7 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
078A0BF7A63723C6172EDC0A /* libPods-Crypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 99EE85CEAF1A1E1F2699104F /* libPods-Crypto.a */; }; 26CFA13E076852CFBC219A92 /* Pods_Crypto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9EAA95AC749CACECE80B4A2 /* Pods_Crypto.framework */; };
13EAA88FDE896CFCD1BDACA0 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DA31E63D91749A6CB1A676 /* libPods-Runner.a */; };
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
3226052220806CE500706A11 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 3226052220806CE500706A11 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
3226052320806CE500706A11 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 3226052320806CE500706A11 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
@@ -23,7 +22,6 @@
3226052D20806CE500706A11 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBA9BB311F1792570053B6EA /* AVFoundation.framework */; }; 3226052D20806CE500706A11 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBA9BB311F1792570053B6EA /* AVFoundation.framework */; };
3226052E20806CE500706A11 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 3226052E20806CE500706A11 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
3226052F20806CE500706A11 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3226052F20806CE500706A11 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3226053020806CE500706A11 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DA31E63D91749A6CB1A676 /* libPods-Runner.a */; };
3226053220806CE500706A11 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 3226053220806CE500706A11 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
3226053320806CE500706A11 /* app.flx in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB71CF902C7004384FC /* app.flx */; }; 3226053320806CE500706A11 /* app.flx in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB71CF902C7004384FC /* app.flx */; };
3226053420806CE500706A11 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 3226053420806CE500706A11 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@@ -56,7 +54,7 @@
328A58A4205F68270039EA5A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 328A58A4205F68270039EA5A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
328A58A6205F68270039EA5A /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 328A58A6205F68270039EA5A /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
328A58A7205F68270039EA5A /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 328A58A7205F68270039EA5A /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
89C523E18F38F3DB0BEC24F6 /* libPods-Dinect.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A55A3E0B57C50C3FFECC43C /* libPods-Dinect.a */; }; 46F0FCE6C30A5E9C139D303C /* Pods_Dinect.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC676CB0C601521CE29275E8 /* Pods_Dinect.framework */; };
ACE8612B1F9F745B006FEF38 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; ACE8612B1F9F745B006FEF38 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
ACE8612C1F9F745B006FEF38 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; ACE8612C1F9F745B006FEF38 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
ACE8612D1F9F745B006FEF38 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; ACE8612D1F9F745B006FEF38 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
@@ -76,6 +74,7 @@
ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; ACE861441F9F745B006FEF38 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
ACE861461F9F745B006FEF38 /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; ACE861461F9F745B006FEF38 /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
ACE861471F9F745B006FEF38 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; ACE861471F9F745B006FEF38 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
E960313FEB51DFEBAEABF4C4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2A5C3DF3596245FEF89DEB6 /* Pods_Runner.framework */; };
FB862E6620548D6C00C04986 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; FB862E6620548D6C00C04986 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
FB862E6720548D6C00C04986 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; FB862E6720548D6C00C04986 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
FB862E6820548D6C00C04986 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; FB862E6820548D6C00C04986 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
@@ -232,7 +231,6 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
11DA31E63D91749A6CB1A676 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
@@ -242,7 +240,6 @@
328A58B0205F68270039EA5A /* Runner copy2-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Runner copy2-Info.plist"; path = "/Users/dinect/projects/checker/ios/Runner copy2-Info.plist"; sourceTree = "<absolute>"; }; 328A58B0205F68270039EA5A /* Runner copy2-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Runner copy2-Info.plist"; path = "/Users/dinect/projects/checker/ios/Runner copy2-Info.plist"; sourceTree = "<absolute>"; };
32DA147B1FBC3DCE008F0388 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; }; 32DA147B1FBC3DCE008F0388 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
32EE9C18205A2B3C0044587E /* Release-Runner copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Release-Runner copy-Info.plist"; path = "/Users/dinect/projects/checker/ios/Release-Runner copy-Info.plist"; sourceTree = "<absolute>"; }; 32EE9C18205A2B3C0044587E /* Release-Runner copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Release-Runner copy-Info.plist"; path = "/Users/dinect/projects/checker/ios/Release-Runner copy-Info.plist"; sourceTree = "<absolute>"; };
3A55A3E0B57C50C3FFECC43C /* libPods-Dinect.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Dinect.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
@@ -256,7 +253,7 @@
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
99EE85CEAF1A1E1F2699104F /* libPods-Crypto.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Crypto.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A2A5C3DF3596245FEF89DEB6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
AC45BF911F9E408E009713E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Info.plist; sourceTree = "<absolute>"; }; AC45BF911F9E408E009713E2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Info.plist; sourceTree = "<absolute>"; };
AC73A4241F9F7F920026EBA4 /* Dinect.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Dinect.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Dinect.plist; sourceTree = "<absolute>"; }; AC73A4241F9F7F920026EBA4 /* Dinect.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Dinect.plist; path = /Users/ntrlab/semyon/apps/checker/ios/Runner/Dinect.plist; sourceTree = "<absolute>"; };
ACE861531F9F745B006FEF38 /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; ACE861531F9F745B006FEF38 /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -269,10 +266,12 @@
BBA9BB391F17927C0053B6EA /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; BBA9BB391F17927C0053B6EA /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };
BBA9BB3B1F1792A90053B6EA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; BBA9BB3B1F1792A90053B6EA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
BBA9BB601F179D270053B6EA /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; }; BBA9BB601F179D270053B6EA /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
C9EAA95AC749CACECE80B4A2 /* Pods_Crypto.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Crypto.framework; sourceTree = BUILT_PRODUCTS_DIR; };
FB862E8320548D6C00C04986 /* Crypto.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Crypto.app; sourceTree = BUILT_PRODUCTS_DIR; }; FB862E8320548D6C00C04986 /* Crypto.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Crypto.app; sourceTree = BUILT_PRODUCTS_DIR; };
FB862E8420548D6C00C04986 /* Debug-Dinect-INT copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Debug-Dinect-INT copy-Info.plist"; path = "/Users/kifio/Desktop/FlutterProjects/checker/ios/Debug-Dinect-INT copy-Info.plist"; sourceTree = "<absolute>"; }; FB862E8420548D6C00C04986 /* Debug-Dinect-INT copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Debug-Dinect-INT copy-Info.plist"; path = "/Users/kifio/Desktop/FlutterProjects/checker/ios/Debug-Dinect-INT copy-Info.plist"; sourceTree = "<absolute>"; };
FB8CCC37204C824A002BBFDA /* Dinect-INT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Dinect-INT.app"; sourceTree = BUILT_PRODUCTS_DIR; }; FB8CCC37204C824A002BBFDA /* Dinect-INT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Dinect-INT.app"; sourceTree = BUILT_PRODUCTS_DIR; };
FB8CCC38204C824A002BBFDA /* Runner copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Runner copy-Info.plist"; path = "/Users/kifio/Desktop/FlutterProjects/checker/ios/Runner copy-Info.plist"; sourceTree = "<absolute>"; }; FB8CCC38204C824A002BBFDA /* Runner copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Runner copy-Info.plist"; path = "/Users/kifio/Desktop/FlutterProjects/checker/ios/Runner copy-Info.plist"; sourceTree = "<absolute>"; };
FC676CB0C601521CE29275E8 /* Pods_Dinect.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Dinect.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -289,7 +288,6 @@
3226052D20806CE500706A11 /* AVFoundation.framework in Frameworks */, 3226052D20806CE500706A11 /* AVFoundation.framework in Frameworks */,
3226052E20806CE500706A11 /* Flutter.framework in Frameworks */, 3226052E20806CE500706A11 /* Flutter.framework in Frameworks */,
3226052F20806CE500706A11 /* App.framework in Frameworks */, 3226052F20806CE500706A11 /* App.framework in Frameworks */,
3226053020806CE500706A11 /* libPods-Runner.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -306,7 +304,7 @@
328A5898205F68270039EA5A /* AVFoundation.framework in Frameworks */, 328A5898205F68270039EA5A /* AVFoundation.framework in Frameworks */,
328A5899205F68270039EA5A /* Flutter.framework in Frameworks */, 328A5899205F68270039EA5A /* Flutter.framework in Frameworks */,
328A589A205F68270039EA5A /* App.framework in Frameworks */, 328A589A205F68270039EA5A /* App.framework in Frameworks */,
89C523E18F38F3DB0BEC24F6 /* libPods-Dinect.a in Frameworks */, 46F0FCE6C30A5E9C139D303C /* Pods_Dinect.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -323,7 +321,7 @@
ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */, ACE861361F9F745B006FEF38 /* AVFoundation.framework in Frameworks */,
ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */, ACE861371F9F745B006FEF38 /* Flutter.framework in Frameworks */,
ACE861381F9F745B006FEF38 /* App.framework in Frameworks */, ACE861381F9F745B006FEF38 /* App.framework in Frameworks */,
13EAA88FDE896CFCD1BDACA0 /* libPods-Runner.a in Frameworks */, E960313FEB51DFEBAEABF4C4 /* Pods_Runner.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -340,7 +338,7 @@
FB862E7120548D6C00C04986 /* AVFoundation.framework in Frameworks */, FB862E7120548D6C00C04986 /* AVFoundation.framework in Frameworks */,
FB862E7220548D6C00C04986 /* Flutter.framework in Frameworks */, FB862E7220548D6C00C04986 /* Flutter.framework in Frameworks */,
FB862E7320548D6C00C04986 /* App.framework in Frameworks */, FB862E7320548D6C00C04986 /* App.framework in Frameworks */,
078A0BF7A63723C6172EDC0A /* libPods-Crypto.a in Frameworks */, 26CFA13E076852CFBC219A92 /* Pods_Crypto.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -444,9 +442,9 @@
BBA9BB351F1792690053B6EA /* CoreMedia.framework */, BBA9BB351F1792690053B6EA /* CoreMedia.framework */,
BBA9BB331F17925F0053B6EA /* CoreGraphics.framework */, BBA9BB331F17925F0053B6EA /* CoreGraphics.framework */,
BBA9BB311F1792570053B6EA /* AVFoundation.framework */, BBA9BB311F1792570053B6EA /* AVFoundation.framework */,
99EE85CEAF1A1E1F2699104F /* libPods-Crypto.a */, C9EAA95AC749CACECE80B4A2 /* Pods_Crypto.framework */,
3A55A3E0B57C50C3FFECC43C /* libPods-Dinect.a */, FC676CB0C601521CE29275E8 /* Pods_Dinect.framework */,
11DA31E63D91749A6CB1A676 /* libPods-Runner.a */, A2A5C3DF3596245FEF89DEB6 /* Pods_Runner.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -465,7 +463,6 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 3226053F20806CE500706A11 /* Build configuration list for PBXNativeTarget "BioChecker" */; buildConfigurationList = 3226053F20806CE500706A11 /* Build configuration list for PBXNativeTarget "BioChecker" */;
buildPhases = ( buildPhases = (
3226051F20806CE500706A11 /* [CP] Check Pods Manifest.lock */,
3226052020806CE500706A11 /* Run Script */, 3226052020806CE500706A11 /* Run Script */,
3226052120806CE500706A11 /* Sources */, 3226052120806CE500706A11 /* Sources */,
3226052620806CE500706A11 /* Frameworks */, 3226052620806CE500706A11 /* Frameworks */,
@@ -473,8 +470,6 @@
3226053820806CE500706A11 /* Embed Frameworks */, 3226053820806CE500706A11 /* Embed Frameworks */,
3226053B20806CE500706A11 /* Thin Binary */, 3226053B20806CE500706A11 /* Thin Binary */,
3226053C20806CE500706A11 /* Embed App Extensions */, 3226053C20806CE500706A11 /* Embed App Extensions */,
3226053D20806CE500706A11 /* [CP] Embed Pods Frameworks */,
3226053E20806CE500706A11 /* [CP] Copy Pods Resources */,
); );
buildRules = ( buildRules = (
); );
@@ -756,11 +751,23 @@
); );
inputPaths = ( inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${PODS_ROOT}/../../../flutter/bin/cache/artifacts/engine/ios-release/Flutter.framework", "${BUILT_PRODUCTS_DIR}/DropDown/DropDown.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${PODS_ROOT}/../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/ZXingObjC/ZXingObjC.framework",
"${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework",
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DropDown.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZXingObjC.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
@@ -782,24 +789,6 @@
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Dinect/Pods-Dinect-resources.sh\"\n"; shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Dinect/Pods-Dinect-resources.sh\"\n";
showEnvVarsInLog = 0; showEnvVarsInLog = 0;
}; };
3226051F20806CE500706A11 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
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";
showEnvVarsInLog = 0;
};
3226052020806CE500706A11 /* Run Script */ = { 3226052020806CE500706A11 /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -828,39 +817,6 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
}; };
3226053D20806CE500706A11 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${PODS_ROOT}/../../../flutter/bin/cache/artifacts/engine/ios-release/Flutter.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3226053E20806CE500706A11 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
showEnvVarsInLog = 0;
};
328A588B205F68270039EA5A /* Run Script */ = { 328A588B205F68270039EA5A /* Run Script */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@@ -896,11 +852,23 @@
); );
inputPaths = ( inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Dinect/Pods-Dinect-frameworks.sh", "${SRCROOT}/Pods/Target Support Files/Pods-Dinect/Pods-Dinect-frameworks.sh",
"${PODS_ROOT}/../../../flutter/bin/cache/artifacts/engine/ios-release/Flutter.framework", "${BUILT_PRODUCTS_DIR}/DropDown/DropDown.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${PODS_ROOT}/../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/ZXingObjC/ZXingObjC.framework",
"${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework",
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DropDown.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZXingObjC.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
@@ -947,11 +915,23 @@
); );
inputPaths = ( inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Crypto/Pods-Crypto-frameworks.sh", "${SRCROOT}/Pods/Target Support Files/Pods-Crypto/Pods-Crypto-frameworks.sh",
"${PODS_ROOT}/../../../flutter/bin/cache/artifacts/engine/ios-release/Flutter.framework", "${BUILT_PRODUCTS_DIR}/DropDown/DropDown.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${PODS_ROOT}/../../../../../flutter/bin/cache/artifacts/engine/ios/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/ZXingObjC/ZXingObjC.framework",
"${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework",
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
); );
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputPaths = ( outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DropDown.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZXingObjC.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;

View File

@@ -1,11 +1,9 @@
import 'dart:async'; import 'dart:async';
import 'package:checker/screens/faq.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'db.dart';
import 'strings.dart'; import 'strings.dart';
// Канал для взаимодействия с кодом платформы. // Канал для взаимодействия с кодом платформы.

View File

@@ -1,10 +1,11 @@
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:http/http.dart' as http;
import 'common.dart'; import 'common.dart';
// Клиент http приложения // Клиент http приложения
final httpClient = createHttpClient(); final httpClient = http.Client();
// Попытка создать токен для кассы. // Попытка создать токен для кассы.
// В случае если токен для кассы уже существует, вернется ошибка 409. // В случае если токен для кассы уже существует, вернется ошибка 409.

View File

@@ -7,7 +7,7 @@ packages:
name: async name: async
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.6" version: "2.0.7"
charcode: charcode:
dependency: transitive dependency: transitive
description: description:
@@ -40,21 +40,21 @@ packages:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.1" version: "3.1.2"
image_picker: image_picker:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker name: image_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.5" version: "0.4.1"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
name: matcher name: matcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.12.1+4" version: "0.12.2+1"
meta: meta:
dependency: transitive dependency: transitive
description: description:
@@ -108,7 +108,7 @@ packages:
name: sqflite name: sqflite
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.4" version: "0.8.9"
stack_trace: stack_trace:
dependency: transitive dependency: transitive
description: description:
@@ -129,7 +129,7 @@ packages:
name: synchronized name: synchronized
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.3.0" version: "1.4.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
@@ -143,7 +143,7 @@ packages:
name: vector_math name: vector_math
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.0.6"
xml: xml:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -152,4 +152,5 @@ packages:
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
sdks: sdks:
dart: ">=2.0.0-dev.23.0 <=2.0.0-edge.0d5cf900b021bf5c9fa593ffa12b15bcd1cc5fe0" dart: ">=2.0.0-dev.35 <=2.0.0-edge.c080951d45e79cd25df98036c4be835b284a269c"
flutter: ">=0.1.4 <2.0.0"

View File

@@ -6,7 +6,7 @@ dependencies:
sprintf: "^3.0.2" sprintf: "^3.0.2"
path_provider: "^0.2.1+1" path_provider: "^0.2.1+1"
sqflite: any sqflite: any
image_picker: '^0.1.3' # use for ask permissions @ iOS image_picker: '^0.4.1' # use for ask permissions @ iOS
xml: "^3.0.0" xml: "^3.0.0"
flutter: flutter:
sdk: flutter sdk: flutter