LoginSignup
0
1

More than 1 year has passed since last update.

NCMBのFlutter SDKを少しだけ使いやすくしました

Posted at

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

NCMBでは公式SDKを提供していませんが、非公式に開発を進めているFlutter SDKがあります。だいたいの機能は実装してきましたが、今回はより使いやすくするためのメソッドを追加しました。実際に使っていく中で感じた不便さを解消するものなので、ぜひお使いください。

ncmb | Dart Package

データストアでフィールドがない場合にチェックするcontainsKeyメソッド

FlutterのMapで、キーの存在をチェックするのに使われるのがcontainsKeyメソッドです。データストアではユーザー自身が自由に項目を追加できるので、そのフィールドが実は存在しない場合があります。

これまではdefaultValueと組み合わせて対応してきました。

if (object.getString('field_name', defaultValue = 'no') == 'no') {
	// フィールドなし
} else {
	// フィールドあり
}

ただ、この方法では実際にデータが no だった場合に問題なので、containsKeyメソッドを追加しました。

if (object.containsKey('field_name')) {
	// フィールドあり(型は不明)
} else {
	// フィールドなし
}

getDoubleでdouble型のデータを取得する

Dartではint型のデータをdoubleにキャストできません(Allow integer literals in double contexts, and allow all integer constants supported by platform. · Issue #34355 · dart-lang/sdkに関連すると思われます)。

そこで、NCMBObjectのgetDoubleメソッドを以下のように修正しています。intの場合は toDouble を使います。それ以外の型の場合は as でキャストを試みます。

double getDouble(String name, {double? defaultValue}) {
	if (!_fields.containsKey(name) && defaultValue != null) return defaultValue;
	if (_fields[name].runtimeType == int) {
		return (_fields[name] as int).toDouble();
	}
	return _fields[name]! as double;
}

これで安全に object.getDouble('field_name') が利用できます。

まとめ

NCMBのFlutter SDKは開発者にとって使いやすいSDKを目指して日々開発を進めています。APIレベルの実装は落ち着いてきたので、より細かなメソッドを実装して使いやすさを向上させています。

ぜひ使っていただき、フィードバックください!

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1