- 投稿日:2020-08-11T22:50:51+09:00
【Flutter】TextFieldのonSubmittedコールバックが頻繁に呼ばれる時に確認すべきこと【Android】
TextFieldのプロパティであるonSubmitted
TextFieldのプロパティであるonSubmittedは公式ドキュメントによると
ユーザーがフィールドのテキストの編集を完了したことを示したときに呼び出されます
とのことだ。発生した異常
ということで、実装したのだが、
テキスト入力が完了していないのに頻繁に呼ばれてしまう現象に見舞われた(Android版のみ)その時のソースコードがこちら
main.dartTextField( // 省略… onFieldSubmitted: AddButtonTapped(); // 省略… )つまり、「テキストの入力が完了したら、AddButtonTapped()を呼んでくれ」というコードだ(と思っていた)
解決法
ソースコードを以下の様に書き換えた。
main.dartTextField( // 省略… onFieldSubmitted: (String str) { AddButtonTapped(); } // 省略… )引数を指定してあげる感じにした。
すると、冒頭で挙げた問題点「テキスト入力が完了していないのに頻繁に呼ばれてしまう現象」が解消した。
関連記事
- 投稿日:2020-08-11T19:02:34+09:00
【Kotlin入門】?:が出てきてなんのこっちゃ【エルビス演算子】
【 ?: の読み方】
ハテナ・コロン
とか
クエスチョン・コロン
と読んでるあなた、
間違っていますよ^^これはエルビス演算子といいます。(ドヤ)
語源
エルビス・プレスリーの髪型に似ているからです。
(StackOverFlowより)https://stackoverflow.com/questions/48253107/what-does-do-in-kotlin-elvis-operator
用法
たとえばこんな時は
val hogehoge?= hugahuga ?: ""hogehogeがnullでないとき、hogehoge = hugahuga
hogehogeがnullのとき、hogehoge = ""
を返します。まとめ
エルビス演算子とかさらっと言えるとドヤれます。
- 投稿日:2020-08-11T19:02:34+09:00
【Kotlin入門】?:が出てきてなんのこっちゃのあなたへ【エルビス演算子】
【 ?: の読み方】
ハテナ・コロン
とか
クエスチョン・コロン
と読んでるあなた、
間違っていますよ^^これはエルビス演算子といいます。(ドヤ)
語源
エルビス・プレスリーの髪型に似ているからです。
(StackOverFlowより)https://stackoverflow.com/questions/48253107/what-does-do-in-kotlin-elvis-operator
用法
たとえばこんな時は
val hogehoge?= hugahuga ?: ""hogehogeがnullでないとき、hogehoge = hugahuga
hogehogeがnullのとき、hogehoge = ""
を返します。まとめ
エルビス演算子とかさらっと言えるとドヤれます。
- 投稿日:2020-08-11T18:35:44+09:00
# HMS Core Scan SDKを使用したバーコードスキャン機能の実装
概要
当社の最新の記事で、HMS Core Scan SDKを迅速に統合する方法を検討し、このSDKをその他のオープンソースのバーコードスキャンツールと比較しました。まだこの記事をお読みでない場合は、ここクリックして、ご覧いただけます。
私たちは、商品を購入したり、ソーシャルメディアアカウントをフォローしたり、製品に関する情報を入手したりする場合に毎日バーコードを利用しています。今日は、バーコードスキャン機能をショッピングアプリに実装する方法についてご紹介します。シナリオ
ユーザーはこの機能を使用してバーコードをスキャンし、製品の情報や購入時に利用できるリンクを受信できます。
プロセス
準備
gradleディレクトリのbuild.gradleファイルを開く
allprojects > repositoriesに移動し、HMS Core SDKのMavenリポジトリアドレスを設定します。allprojects { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } }buildscript > repositoriesに移動し、HMS Core SDKのMavenリポジトリアドレスを設定します。
buildscript { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } }ビルド依存関係を追加する
appディレクトリのbuild.gradleファイルを開きます。
HMS Core SDKを統合します。dependencies{ implementation 'com.huawei.hms:scan:1.1.3.301' } Assign permissions and specify features. <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />SDKの統合にはデフォルト表示モードを使用するため、アプリのAndroidManifest.xmlファイルでスキャン画面を宣言します。
<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />実装
製品の追加と製品の照会という2つの関数を実装できます。製品のバーコードをスキャンし、撮影することで製品をバインドできます。ユーザーは、バーコードをスキャンしてその製品を照会できます。
動的な権限の申請を送信する
private static final int PERMISSION_REQUESTS = 1; @Override public void onCreate(Bundle savedInstanceState) { // Checking camera permission if (!allPermissionsGranted()) { getRuntimePermissions(); } }画面を開いて製品を追加する
Add Productをタップし、製品を追加できる画面を開きます。
public void addProduct(View view) { Intent intent = new Intent(MainActivity.this, AddProductActivity.class); startActivityForResult(intent, REQUEST_ADD_PRODUCT); }バーコードをスキャンして製品情報を記録する
HUAWEI Scan Kitのデフォルト表示モードを使用してバーコードをスキャンします。
private void scanBarcode(int requestCode) { HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create(); ScanUtil.startScan(this, requestCode, options); }コールバック関数でスキャン結果を保存する
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data == null) { return; } if ((requestCode == this.REQUEST_CODE_SCAN_ALL) && (resultCode == Activity.RESULT_OK)) { HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT); if (obj != null && obj.getOriginalValue() != null) { this.barcode = obj.getOriginalValue(); } } else if ((requestCode == this.REQUEST_TAKE_PHOTO) && (resultCode == Activity.RESULT_OK)) { …… } }バーコードをスキャンして製品を照会する
Query Productをタップし、製品を照会できる画面を開きます。コールバック関数を使用して結果を表示します。
public void queryProduct(View view) { HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.ALL_SCAN_TYPE).create(); ScanUtil.startScan(this, REQUEST_QUERY_PRODUCT, options); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data == null) { return; } if ((requestCode == this.REQUEST_ADD_PRODUCT) && (resultCode == Activity.RESULT_OK)) { barcodeToProduct.put(data.getStringExtra(Constant.BARCODE_VALUE), data.getStringExtra(Constant.IMAGE_PATH_VALUE)); } else if ((requestCode == this.REQUEST_QUERY_PRODUCT) && (resultCode == Activity.RESULT_OK)) { HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT); String path = ""; if (obj != null && obj.getOriginalValue() != null) { path = barcodeToProduct.get(obj.getOriginalValue()); } if (path != null && !path.equals("")) { loadCameraImage(path); showPictures(); } } }早速、試してみましょう
More Info in Huawei Developer website
https://developer.huawei.com/consumer/en/hms/huawei-mlkit
近日公開予定
HUAWEI Scan Kitを使用して可能となる、驚くような事例をさらにご紹介します。是非お待ちください。