From 79a16fb81f19ecb48097469dedf5a06652c05c3b Mon Sep 17 00:00:00 2001 From: Ivan Murashov Date: Mon, 17 Jul 2017 19:02:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D1=82=D1=8C=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D1=81=D1=8B=20=D0=BD=D0=B0=20=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8=D1=8E,=20=D0=B2?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=86=D0=B8=D1=8E,=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=BE=D0=BA?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=81=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 1 + android/app/src/main/AndroidManifest.xml | 9 ++- .../checker/activity/CameraActivity.java | 2 +- .../dinect/checker/activity/MainActivity.java | 61 +++++++++++++++++++ .../service/RegistrationIntentService.java | 24 ++++++++ .../checker/view/CameraPreview.java | 0 .../checker/activity/MainActivity.java | 38 ------------ checker.iml | 16 +++++ lib/main.dart | 10 ++- lib/registration.dart | 43 +++++++++++-- lib/splash.dart | 11 ++-- 11 files changed, 163 insertions(+), 52 deletions(-) rename android/app/src/main/java/com/{yourcompany => dinect}/checker/activity/CameraActivity.java (99%) create mode 100644 android/app/src/main/java/com/dinect/checker/activity/MainActivity.java create mode 100644 android/app/src/main/java/com/dinect/checker/service/RegistrationIntentService.java rename android/app/src/main/java/com/{yourcompany => dinect}/checker/view/CameraPreview.java (100%) delete mode 100644 android/app/src/main/java/com/yourcompany/checker/activity/MainActivity.java create mode 100644 checker.iml diff --git a/android/app/build.gradle b/android/app/build.gradle index 2b8fd88..0b26478 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -47,6 +47,7 @@ flutter { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) + compile "com.google.android.gms:play-services-gcm:11.0.1" androidTestCompile 'com.android.support:support-annotations:21.0.0' androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 9de6edc..2f27478 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -18,7 +18,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - - + + + diff --git a/android/app/src/main/java/com/yourcompany/checker/activity/CameraActivity.java b/android/app/src/main/java/com/dinect/checker/activity/CameraActivity.java similarity index 99% rename from android/app/src/main/java/com/yourcompany/checker/activity/CameraActivity.java rename to android/app/src/main/java/com/dinect/checker/activity/CameraActivity.java index 47c7f24..6564507 100644 --- a/android/app/src/main/java/com/yourcompany/checker/activity/CameraActivity.java +++ b/android/app/src/main/java/com/dinect/checker/activity/CameraActivity.java @@ -1,4 +1,4 @@ -package com.dinnect.checker; +package com.dinnect.checker.activity; import android.app.Activity; import android.content.pm.ActivityInfo; diff --git a/android/app/src/main/java/com/dinect/checker/activity/MainActivity.java b/android/app/src/main/java/com/dinect/checker/activity/MainActivity.java new file mode 100644 index 0000000..7e1a3c5 --- /dev/null +++ b/android/app/src/main/java/com/dinect/checker/activity/MainActivity.java @@ -0,0 +1,61 @@ +package com.dinnect.checker.activity; + +import android.os.Bundle; +import android.content.Intent; +import android.util.Log; +import com.dinnect.checker.activity.CameraActivity; +import com.dinnect.checker.service.RegistrationIntentService; + +import io.flutter.app.FlutterActivity; +import io.flutter.plugins.GeneratedPluginRegistrant; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; +import io.flutter.plugin.common.MethodChannel.MethodCallHandler; +import io.flutter.plugin.common.MethodChannel.Result; + +import com.google.android.gms.iid.InstanceID; + +public class MainActivity extends FlutterActivity { + + private static final String SCANNER_CHANNEL = "com.dinnect.checker"; +// private static final String INSTANCE_ID_CHANNEL = "com.dinnect.checker/instance_id"; + + private String mInstanceID = null; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + GeneratedPluginRegistrant.registerWith(this); + +// new MethodChannel(getFlutterView(), INSTANCE_ID_CHANNEL).setMethodCallHandler( +// new MethodCallHandler() { +// @Override +// public void onMethodCall(MethodCall call, Result result) { +// +// } +// }); + + new MethodChannel(getFlutterView(), SCANNER_CHANNEL).setMethodCallHandler( + new MethodCallHandler() { + @Override + public void onMethodCall(MethodCall call, Result result) { + + } + }); + } + + public void startScanner() { + startActivity(new Intent(MainActivity.this, CameraActivity.class)); + } + + public String getInstanceID() { + if (mInstanceID == null) { + InstanceID instanceID = InstanceID.getInstance(this); + mInstanceID = instanceID.getId(); + } + Log.d() + return mInstanceID; + } + +} diff --git a/android/app/src/main/java/com/dinect/checker/service/RegistrationIntentService.java b/android/app/src/main/java/com/dinect/checker/service/RegistrationIntentService.java new file mode 100644 index 0000000..85e56d0 --- /dev/null +++ b/android/app/src/main/java/com/dinect/checker/service/RegistrationIntentService.java @@ -0,0 +1,24 @@ +package com.dinnect.checker.service; + +import android.app.IntentService; +import android.content.Intent; +import android.util.Log; +import android.support.annotation.Nullable; +import android.widget.Toast; +import com.google.android.gms.iid.InstanceID; + +import java.io.IOException; + +public class RegistrationIntentService extends IntentService { + + public RegistrationIntentService() { + super(RegistrationIntentService.class.getName()); + } + + @Override + protected void onHandleIntent(@Nullable Intent intent) { + InstanceID instanceID = InstanceID.getInstance(this); + String token = instanceID.getId(); + Log.d("kifio", token); + } +} \ No newline at end of file diff --git a/android/app/src/main/java/com/yourcompany/checker/view/CameraPreview.java b/android/app/src/main/java/com/dinect/checker/view/CameraPreview.java similarity index 100% rename from android/app/src/main/java/com/yourcompany/checker/view/CameraPreview.java rename to android/app/src/main/java/com/dinect/checker/view/CameraPreview.java diff --git a/android/app/src/main/java/com/yourcompany/checker/activity/MainActivity.java b/android/app/src/main/java/com/yourcompany/checker/activity/MainActivity.java deleted file mode 100644 index 376b2c1..0000000 --- a/android/app/src/main/java/com/yourcompany/checker/activity/MainActivity.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dinnect.checker; - -import android.os.Bundle; -import android.content.Intent; -import android.util.Log; -import com.dinnect.checker.CameraActivity; - -import io.flutter.app.FlutterActivity; -import io.flutter.plugins.GeneratedPluginRegistrant; - -import io.flutter.plugin.common.MethodCall; -import io.flutter.plugin.common.MethodChannel; -import io.flutter.plugin.common.MethodChannel.MethodCallHandler; -import io.flutter.plugin.common.MethodChannel.Result; - -public class MainActivity extends FlutterActivity { - - private static final String CHANNEL = "com.dinnect.checker/scanner"; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - GeneratedPluginRegistrant.registerWith(this); - new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler( - new MethodCallHandler() { - @Override - public void onMethodCall(MethodCall call, Result result) { - Log.d("kifio", "onMethodCall"); - startActivity(new Intent(MainActivity.this, CameraActivity.class)); - } - }); - } - - public void startScanner() { - - } - -} diff --git a/checker.iml b/checker.iml new file mode 100644 index 0000000..3b8d8be --- /dev/null +++ b/checker.iml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 77ede3e..47cfb26 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'splash.dart'; -const String _name = "Ivan Murashov"; +const String _name = 'Ivan Murashov'; +const String intUrl = 'https://pos-api.dinect.com/20130701/'; +const String intToken = '9fec83cdca38c357e6b65dbb17514cdd36bf2a08'; + +final httpClient = createHttpClient(); void main() { runApp(new Checker()); @@ -23,3 +28,6 @@ abstract class BaseState extends State { } } + +//DMUrl := 'http://pos-api-int.dinect.com/20130701/'; +//DMAToken := '9fec83cdca38c357e6b65dbb17514cdd36bf2a08'; diff --git a/lib/registration.dart b/lib/registration.dart index 553ee8c..6ad74a3 100644 --- a/lib/registration.dart +++ b/lib/registration.dart @@ -10,14 +10,15 @@ class RegistrationScreen extends StatefulWidget { class _RegistrationScreenState extends BaseState { - static const platform = const MethodChannel('com.dinnect.checker/scanner'); + static const platform = const MethodChannel('com.dinnect.checker'); + + String _merchantID = ""; + String _posNumber = ""; @override Widget build(BuildContext context) { return new Scaffold(appBar: _getAppBar(), body: _getScreen()); } - faq() {} - AppBar _getAppBar() { return new AppBar(title: new Text("Регистрация магазина"), backgroundColor: const Color(0xff4272e7), actions: [ @@ -77,7 +78,15 @@ class _RegistrationScreenState extends BaseState { return new TextField(decoration: new InputDecoration(hintText: hint, hideDivider: true, hintStyle: new TextStyle(color: const Color(0xffa5a5a5), - fontSize: 16.0))); + fontSize: 16.0)), onChanged: (text) => _handleUserInput(text) ); + } + + void _handleUserInput(String text) { + if (text.length > 0) { + setState(() { //new + _merchantID = text; + }); + } } Decoration _getDecoraionForInputField() { @@ -92,9 +101,31 @@ class _RegistrationScreenState extends BaseState { child: new Container(height: 64.0, padding: new EdgeInsets.all(8.0), child: new RaisedButton(child: new Text('ЗАРЕГИСТРИРОВАТЬ', style: new TextStyle(color: Colors.white)), - onPressed: null, disabledColor: const Color(0xffbfbfbf)))); + onPressed: _merchantID.length == 0 + ? null + : () => _register(_merchantID), + disabledColor: const Color(0xffbfbfbf)))); } - doStuff() {} + void _register(String merchantShop) { + _registerToken(merchantShop); + } + Future _registerToken(String merchantShop) async { + + String pos = await platform.invokeMethod('getInstanceID'); + String userAgent = 'dm-checker-test v1.0.1'; + + var body = { + 'merchant_shop' : merchantShop, + 'pos' : pos, + 'description' : userAgent + '-' + pos + }; + + httpClient.post(intUrl, body: body).then((response) { + print(response); + }).catchError((error) { + print(error); + }); + } } \ No newline at end of file diff --git a/lib/splash.dart b/lib/splash.dart index 3f545e2..84193b1 100644 --- a/lib/splash.dart +++ b/lib/splash.dart @@ -2,21 +2,24 @@ import 'dart:async'; import 'registration.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; class SplashScreen extends StatelessWidget { @override Widget build(BuildContext context) { + new Future.delayed(const Duration(milliseconds: 1000), () { _goToNextScreen(context); }); + return new Image.asset('assets/splash.png', fit: BoxFit.cover); } - _goToNextScreen(BuildContext context) { + _goToNextScreen(BuildContext context) async { Navigator.of(context).push(new MaterialPageRoute( - builder: (BuildContext context) { - return new RegistrationScreen(); - })); + builder: (BuildContext context) { + return new RegistrationScreen(); + })); } } \ No newline at end of file