More
FlutterでUint8Listを使用し、Back4appを利用してバックエンドに永続化する方法
12 分
はじめに デジタルシステムでは、ファイルはしばしばバイトのシーケンスとして表現され、dartは uint8list を使用してバイトデータを効率的に処理する方法を提供します。 uint8list は、符号なし8ビット整数の固定長リストであり、各数値は0から255の範囲です。この構造は、メモリ効率が重要な画像やファイルなどのバイナリデータを扱うのに便利です。 このチュートリアルでは、flutterでの uint8list の扱い方、ファイルをバイトリストに変換する方法、parse sdkを使用してback4appのバックエンドにデータを永続化する方法を説明します。 前提条件 始める前に、以下のものを用意してください back4appアカウント。 back4app com https //www back4app com で無料アカウントにサインアップしてください。 ローカルマシンにflutter開発環境をセットアップしてください。まだセットアップしていない場合は、 flutterインストールガイド https //flutter dev/docs/get started/install を参照してください。 dart、flutterウィジェット、バックエンドサービスのためのback4appの基本的な知識。 ステップ1 – back4appバックエンドの設定 back4appプロジェクトを作成する あなたの back4appアカウント https //www back4app com/ にログインし、新しいプロジェクトを作成します。 parseクラスを作成する このチュートリアルでは、バイナリデータを保存するために「 filestorage 」というparseクラスを作成します filename (string) ファイルの名前。 filedata (file) ファイルのバイナリデータ。 back4appの資格情報を取得する プロジェクト設定に移動して、flutterアプリをback4appに接続するために必要なアプリケーションidとクライアントキーを取得します。 ステップ2 – flutterプロジェクトの設定 新しいflutterプロジェクトを作成する ターミナルまたはコマンドプロンプトを開き、次のコマンドを実行します flutter create uint8list example 依存関係を追加する pubspec yaml を開き、次の依存関係を追加します dependencies flutter sdk flutter parse server sdk flutter latest version file picker latest version path provider latest version 次のコマンドを実行します flutter pub get これらの依存関係をインストールします。 アプリでparseを初期化する lib/main dart , parse sdkを初期化します import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home uint8listexample(), ); } } 次の部分を置き換えます 'your back4app app id' と 'your back4app client key' を実際のback4appの資格情報に置き換えます。 ステップ 3 – uint8list を flutter で使用する ファイルの選択と読み取り デバイスからファイルを選択し、それを uint8list に変換するには、 file picker パッケージを使用します。 import 'dart\ io'; import 'dart\ typed data'; import 'package\ flutter/material dart'; import 'package\ file picker/file picker dart'; import 'package\ path provider/path provider dart'; class uint8listexample extends statefulwidget { @override uint8listexamplestate createstate() => uint8listexamplestate(); } class uint8listexamplestate extends state\<uint8listexample> { uint8list? filebytes; string? filename; future\<void> pickfile() async { filepickerresult? result = await filepicker platform pickfiles(); if (result != null) { platformfile file = result files first; setstate(() { filebytes = file bytes; filename = file name; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('uint8list example')), body center( child column( mainaxisalignment mainaxisalignment center, children \[ elevatedbutton( onpressed pickfile, child text('pick a file'), ), if ( filename != null) text('selected file $ filename'), if ( filebytes != null) elevatedbutton( onpressed savetobackend, child text('save to backend'), ), ], ), ), ); } future\<void> savetobackend() async { // implement the saving logic in the next step } } このコードは、ユーザーがファイルを選択し、ファイルを uint8list , として読み取り、ファイル名と保存ボタンを表示します。 ステップ 4 – uint8list を back4app に保存する ファイルをback4appに保存するために、 parsefile オブジェクトを使用します。これにより、画像や文書などのバイナリデータをアップロードできます。 ファイルをback4appに保存する savetobackend メソッドを更新して、選択したファイルをback4appに永続化します future\<void> savetobackend() async { if ( filebytes != null && filename != null) { final parsefile = parsefile(null, name filename, bytedata filebytes); // create a new parseobject to store the file final filestorage = parseobject('filestorage') set('filename', filename) set('filedata', parsefile); // save the file in back4app final response = await filestorage save(); if (response success) { scaffoldmessenger of(context) showsnackbar(snackbar( content text('file saved successfully!'), )); } else { scaffoldmessenger of(context) showsnackbar(snackbar( content text('failed to save file '), )); } } } このメソッドは、 parsefile を使用して、ファイルをバイナリデータとしてback4appにアップロードします。成功した場合、確認メッセージが表示されます。 ステップ5 – アプリの実行 アプリを実行する using flutter run ファイルを選択するボタンが表示され、選択後にバックエンドに保存するオプションが表示されるはずです。 back4appでデータを確認する には、back4appダッシュボードにログインし、 filestorage クラスを確認します。ファイルが名前と共に保存されているのが見えるはずです。 バイナリデータを保存するためのベストプラクティス バイナリデータや uint8list を扱う際のベストプラクティスは以下の通りです 使用する back4appの parsefile は、画像、動画、ドキュメントなどのバイナリデータを効率的に保存および取得する方法です。 大きなファイルをparseオブジェクトに直接保存しない ファイルが大きい場合は、aws s3などのストレージサービスを使用し、ファイル自体ではなくファイルのurlをparseオブジェクトに保存することを検討してください。 圧縮と最適化 大きな画像やファイルの場合、パフォーマンスを向上させるために、アップロードする前にファイルを圧縮することを検討してください。 結論 このチュートリアルでは、 uint8list をflutterで扱い、ファイルをバイトリストに変換し、parse sdkを使用してback4appにこのデータを永続化する方法を説明しました。 uint8list は、dartでバイトデータを効率的に扱う方法を提供し、画像のアップロード、ドキュメントの保存などのファイル操作に適しています。これをback4appと統合することで、クラウドでバイナリデータを簡単に保存および管理できます。 詳細については、 flutterのドキュメント https //flutter dev/docs と back4appのドキュメント https //www back4app com/docs をご覧ください。コーディングを楽しんでください!