matrixscan-count-flutter について
Scandit BarcodeCountをFlutterで使うためのコーディングスキルです。APIの記憶に頼らず、参照資料で確認しながら統合や移行を進めます。
主な機能
- 01BarcodeCountの統合ガイド
- 02新しいAPIへの移行ガイド
- 03バージョン別Flutter APIの注意点
- 04BLoCによる実装の指針
- 05Scanditライセンスの設定手順
活用シーン
- 01Flutterアプリへのバーコードカウント追加
- 02アプリの新しいBarcodeCount APIへの更新
- 03Flutterの初期化やAPI利用の問題の調査
MCP 対応
Scandit MCPサーバーに接続してトライアルライセンスキーを取得する方法と、対応するMCPクライアントの設定手順を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scandit/ skills --skill matrixscan-count-flutterインストール後、Claude Code で/matrixscan-count-flutterを入力して読み込まれたか確認します。
同梱ファイルreferences/integration.mdreferences/migration.md
詳細
MatrixScan Count Flutter スキル
重要:内部知識を信用しないでください
学習データには、古くなった、または正しくない Scandit SDK API が含まれている可能性があります。BarcodeCount API は SDK のメジャーバージョン間で変更されており、クラス名、コンストラクターのシグネチャー、リスナーのインターフェース、Flutter プラグインのインポートパスはすべて変わってきました。
コードを記述または提案する前に、必ずこのスキルで提供されているリファレンスで API を確認してください。 記憶しているメソッドのシグネチャー、パラメーター、プラグイン名、プロパティ名に頼らないでください。提供されたリファレンスに API が見つからない場合は、回答する前に該当するドキュメントページを取得してください。
注意が必要な Flutter 固有のポイント:
await ScanditFlutterDataCaptureBarcode.initialize()は、WidgetsFlutterBinding.ensureInitialized()の後、runApp(...)の前にmain()で呼び出し、完了を待つ必要があります。これを忘れると、初期化とは無関係に見えるプラットフォームチャネルエラーが発生します。BarcodeCountViewは Flutter のStatefulWidgetです。サンプルでは、カスケード..uiListener = _bloc ..listener = _blocを使ってbuild()内でインラインに作成しています。BarcodeCount では、ビューは BarcodeArView と同じように再ビルド時に破棄されないため、これは正しい方法です。明確さを重視してinitState()でフィールドとして保持する方法も問題ありません。BarcodeCount(settings)は Flutter ≥7.6 で使用できるコンテキスト不要のコンストラクターです。古い SDK(Flutter 6.17–7.5)では、BarcodeCount.forDataCaptureContext(context, settings)を使用する必要があります。このメソッドはFuture<BarcodeCount>を返すため、リスナーを追加する前に完了を待ってください。≥7.6 では、コンテキスト不要のコンストラクターを使用する場合、dataCaptureContext.setMode(barcodeCount)を明示的に呼び出してください。- BLoC は
DataCaptureContext、BarcodeCount、カメラのライフサイクルを管理します。また、BLoC はBarcodeCountListener、BarcodeCountViewListener、BarcodeCountViewUiListenerも実装します。 - BarcodeCount のインポートバレルは
scandit_flutter_datacapture_barcode_countです。これはscandit_flutter_datacapture_barcodeとは別のバレルです。必ず両方をインポートしてください。 Symbologyの enum 値は Dart では lowerCamelCase を使用します:Symbology.code128、Symbology.ean13Upca、Symbology.code39。Symbology.Code128/Symbology.EAN13UPCAは記述しないでください。これは JS/TS の形式であり、Dart ではコンパイルできません。- Flutter 専用のリスナーメソッド:Flutter ≥8.3 の
BarcodeCountListenerは、didUpdateSessionを追加する拡張インターフェースIBarcodeCountExtendedListenerを備えています。Flutter ≥8.3 のBarcodeCountCaptureListListenerは、didCompleteCaptureListを追加するIBarcodeCountCaptureListExtendedListenerを備えています。これらは Flutter 専用の追加機能です。 - SDK のドキュメントに従い、
BarcodeCountViewは全画面で表示する必要があります。 - カメラの権限は iOS(
ios/Runner/Info.plistのNSCameraUsageDescription)と Android(permission_handlerによる実行時リクエスト)の両方で必要です。 - 最小 SDK バージョンに関する注意:BarcodeCount Flutter 6.17、コンテキスト不要のコンストラクター 7.6、Status モード 7.0(Flutter での最初のバージョン)、Mapping フロー 8.3、リストにないバーコードのアクション設定 8.3、
TextForBarcodesNotInListDetectedHint8.3、TextForClusteringGestureHint8.3、shouldDisableModeOnExitButtonTapped8.3。 - ライセンスのプレースホルダーは、必ず次のとおりにしてください:
'-- ENTER YOUR SCANDIT LICENSE KEY HERE --'
インテントの振り分け
ユーザーのリクエストに基づいて、回答する前にリファレンスファイルを読み込んでください:
-
BarcodeCount をゼロから統合する(例:「アプリに MatrixScan Count を追加する」、「バーコードカウントを設定する」、「Flutter で BarcodeCount を使う方法」、「バーコードをカウントする方法」、「リストに対してスキャンする」)→ references/integration.md を読み、そこに記載された手順に従ってください。
-
古い BarcodeCount コンストラクターから移行する、または新しい機能を追加する(例:「forDataCaptureContext から移行する」、「BarcodeCount コンストラクターを更新する」、「status モードを追加する」、「mapping フローを追加する」、「リストにないバーコードのアクション」)→ references/migration.md を読み、そこに記載されたガイドに従ってください。
API の使用ポリシー
以下の Scandit リファレンスに明記されている API のみを使用してください。メソッドのシグネチャ、パラメーター、プロパティ名、インポートを創作したり、推測したりしないでください。API が存在するか、または呼び出し方が不明な場合、あるいはアナライザー/実行時エラーが発生した場合は、回答する前に関連するリファレンスページを取得してください。ユーザーに自分でドキュメントを確認するよう伝えてはいけません。回答の後には、ユーザーがさらに調べられるよう、必ず関連リンクを記載してください。
ドキュメントの URL を決して組み立てたり、推測したりしないでください。 特定のクラスまたはプロパティの API ページが必要な場合は、次の手順に従ってください。
- まず、すでに取得したページに直接リンクがあるか確認します。
- 直接リンクが見つからない場合は、API インデックスを取得して、そこから実際のリンクを抽出します。
フレームワークのバリエーションに関するポリシー
Flutter アプリでは、StatefulWidget、BLoC、Provider、Riverpod など、多くの状態管理パターンが使用されています。このスキルの例では、公式の MatrixScanCountSimpleSample に沿っており、スキャンパイプラインをウィジェットツリーから明確に分離でき、カメラのライフサイクルとも組み合わせやすいため、BLoC パターンを使用します。対象のプロジェクトですでに別のパターンが使われている場合は、BarcodeCount の接続方法の考え方(DataCaptureContext と BarcodeCount を保持する所有者を 1 つにし、セッションデータを UI に公開する)を維持し、コードスニペットをそのプロジェクトの既存の規約に合わせて移植してください。
ライセンスキー
スキャンには Scandit ライセンスキーが必要です。このスキルでは、ライセンス製品は native、ライセンス対象プラットフォームは ios と android です。
次の手順を順番に実行してください。MCP が使えないことを理由に、ユーザーを待たせてはいけません。
-
Scandit MCP サーバーが接続されている場合 — 製品に
native、プラットフォームにiosとandroidを指定してensure_scanner_setupを呼び出し、続けてget_license_env_commandが返すコマンドを実行します。これにより、キーがプロジェクトの.envに書き込まれます。チャットではマスクしたプレビューのみ表示し、キー全体を決して表示しないでください。 -
接続されていない場合 — 一度だけ接続を提案し、手順 1 に進みます。
- Claude Code:
claude mcp add --transport http scandit https://ssl.scandit.com/mcp - Cursor:
{"mcpServers": {"scandit": {"url": "https://ssl.scandit.com/mcp"}}}を~/.cursor/mcp.jsonに追加します - VS Code:
{"servers": {"scandit": {"type": "http", "url": "https://ssl.scandit.com/mcp"}}}を MCP ユーザー設定に追加します
認証はブラウザー経由のため、ヘッドレス環境または CI ではサポートされていません。サーバーが発行するのはトライアルキーのみです。プロダクションライセンスの作成、取り消し、変更は行いません。
- Claude Code:
-
ユーザーが希望しない場合、または MCP クライアントがない場合 — https://ssl.scandit.com で自分でキーを生成して貼り付けてもらいます(アカウントがまだない場合:https://ssl.scandit.com/dashboard/sign-up?p=test)。
その後、プレースホルダーの代わりにキーをコードへ設定してください。キーを .env に置いただけでは、アプリには反映されません。--dart-define-from-file=.env を使ってビルド時に渡し、String.fromEnvironment で読み取ってください。どのプラットフォームでも最も簡単なのは、.env を読み取ってキーをライセンスキー呼び出しに直接指定する方法です。この場合も、チャットにはマスクしたプレビューのみを表示してください。
リファレンス
ユーザーの質問に応じて、適切なリソースを案内してください。
| トピック | リソース |
|---|---|
| Flutter の統合 | はじめに · サンプル |
| API リファレンス全般 | BarcodeCount API |