ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Flutter SDK(非公式)の使い方【ファイルストアの使い方】

f:id:mbaasdevrel:20200110154553p:plain FlutterはDartで書かれたフレームワークになります。元々iOSやAndroidといったスマートフォン向けでしたが、今ではWebやWindows、macOSといったマルチプラットフォームで動作します。Flutter/Dartを覚えることで、多くの環境に対してアプリケーション開発が可能になります。

NCMBでは公式SDKを提供していませんが、非公式に開発を進めているFlutter SDKがあります。元々ベータとして0.1系でしたが、大幅な機能変更に合わせて v2 になりました。

この記事では、初期化の方法とファイルストアの使い方を紹介します。

インストール

pubspec.yaml を編集します。

dependencies:
  ncmb: ^2.0.2

そして dart pub get でインストールできます。

使い方

任意のファイル上でライブラリを読み込みます。

import 'package:ncmb/ncmb.dart';

そしてNCMBオブジェクトを初期化します。

NCMB('APPLICATION_KEY', 'CLIENT_KEY');

ファイルのアップロード

ファイルアップロードは NCMBFile.upload メソッドで行います。

テキストファイルのアップロード

テキストファイルをアップロードする場合には、Stringをそのまま適用してください。

var fileName = 'dart.txt';
var file = await NCMBFile.upload(fileName, 'Hello world');

mimeTypeを指定する場合には3つ目の引数を使います。

var fileName = 'dart.csv';
var file = await NCMBFile.upload(fileName, 'a,b,c', mimeType: 'text/csv');

バイナリファイルの場合

バイナリの場合はファイルのバイト文字列を渡します。

var fileName = 'dart.png';
var blob = await File(fileName).readAsBytes();
var file = await NCMBFile.upload(fileName, blob);

ファイルのダウンロード

ファイルダウンロードは download メソッドを使います。

テキストファイルのダウンロード

テキストファイルの場合は引数として text を指定してください。

var file = NCMBFile();
file.set('fileName', 'dart.txt');
var content = await file.download('text');

バイナリファイルのダウンロード

バイナリの場合は引数不要です。バイト文字列が返ってきます。

var file = NCMBFile();
var fileName = 'dart.png';
file.set('fileName', fileName);
var content = await file.download();

ACLの使い方

ACLは3つ目の引数として指定してください。

var acl = NCMBAcl();
acl
  ..setPublicReadAccess(false)
  ..setPublicWriteAccess(false)
  ..setUserReadAccess(user, true)
  ..setUserWriteAccess(user, true);
var fileName = 'acl.txt';
var file = await NCMBFile.upload(fileName, 'Hello world', acl: acl);

ファイルの検索

検索は query メソッドを使ってNCMBQueryを取得します。

var query = NCMBFile.query();
var ary = await query.fetchAll();

ファイルの削除

ファイル削除は delete メソッドを使います。

await file.delete();

コード

コードはオープンソースで、GitHub上で公開しています。ライセンスはMIT Licenseになります。

NCMBMania/ncmb-dart: NCMB library for Dart and Flutter.

Flutter依存の部分を削除していますので、純粋なDartライブラリとして利用可能です。また、ネイティブアプリ部分も削除していますので、Flutter for Webでも利用可能です。

まとめ

Flutterを覚えればiOS、Androidアプリともに一つのコードで書けるようになります。DartはJavaScriptライクな言語で、JavaScriptをマスターしている人であれば、それほど苦労せずにDartを書けるようになるでしょう。ぜひFlutterを使ったアプリ開発にNCMBをご利用ください!

ncmb | Dart Package

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。