mcpField
M
matrixscan-count-flutter

matrixscan-count-flutter

github.com/scandit開発2041 回インストール5 日前に更新
リポジトリ

matrixscan-count-flutter について

Scandit BarcodeCountをFlutterで使うためのコーディングスキルです。APIの記憶に頼らず、参照資料で確認しながら統合や移行を進めます。

主な機能

  1. 01BarcodeCountの統合ガイド
  2. 02新しいAPIへの移行ガイド
  3. 03バージョン別Flutter APIの注意点
  4. 04BLoCによる実装の指針
  5. 05Scanditライセンスの設定手順

活用シーン

  1. 01Flutterアプリへのバーコードカウント追加
  2. 02アプリの新しいBarcodeCount APIへの更新
  3. 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、TextForBarcodesNotInListDetectedHint 8.3、TextForClusteringGestureHint 8.3、shouldDisableModeOnExitButtonTapped 8.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 ページが必要な場合は、次の手順に従ってください。

  1. まず、すでに取得したページに直接リンクがあるか確認します。
  2. 直接リンクが見つからない場合は、API インデックスを取得して、そこから実際のリンクを抽出します。

フレームワークのバリエーションに関するポリシー

Flutter アプリでは、StatefulWidget、BLoC、Provider、Riverpod など、多くの状態管理パターンが使用されています。このスキルの例では、公式の MatrixScanCountSimpleSample に沿っており、スキャンパイプラインをウィジェットツリーから明確に分離でき、カメラのライフサイクルとも組み合わせやすいため、BLoC パターンを使用します。対象のプロジェクトですでに別のパターンが使われている場合は、BarcodeCount の接続方法の考え方(DataCaptureContext と BarcodeCount を保持する所有者を 1 つにし、セッションデータを UI に公開する)を維持し、コードスニペットをそのプロジェクトの既存の規約に合わせて移植してください。

ライセンスキー

スキャンには Scandit ライセンスキーが必要です。このスキルでは、ライセンス製品は native、ライセンス対象プラットフォームは ios と android です。

次の手順を順番に実行してください。MCP が使えないことを理由に、ユーザーを待たせてはいけません。

  1. Scandit MCP サーバーが接続されている場合 — 製品に native、プラットフォームに ios と android を指定して ensure_scanner_setup を呼び出し、続けて get_license_env_command が返すコマンドを実行します。これにより、キーがプロジェクトの .env に書き込まれます。チャットではマスクしたプレビューのみ表示し、キー全体を決して表示しないでください。

  2. 接続されていない場合 — 一度だけ接続を提案し、手順 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 ではサポートされていません。サーバーが発行するのはトライアルキーのみです。プロダクションライセンスの作成、取り消し、変更は行いません。

  3. ユーザーが希望しない場合、または 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

コメント