get_it は Dart のサービスロケーターのパッケージです。
Flutter が 1.0 になった 2018 年 12 月より半年以上前から存在しているみたい。。。
get_it パッケージは、依存性の管理に使用されるパッケージです。
依存関係を登録し、アプリケーション内で再利用するためのクラスのインスタンスを提供します。
アプリ内でよく使う機能などを1箇所で管理ができる!
どのページからでも使用することができる!
再利用(よく使用)するものを1箇所にまとめて使い回しすることができる
今回は実際にお気に入り機能を作成していきます。
今回はlocator.dartというファイルを準備しそこに記述していきました。
こちらがlocator.dartの全体です。
GetIt locator = GetIt.instance;
void setupLocator() {
locator.registerSingleton(UserService());
}
class UserService {
final favoriteItemList = <int>[];
void addFavoriteItem({required int listNumber}) {
favoriteItemList.add(listNumber);
}
void removeFavoriteItem({required int listNumber}) {
favoriteItemList.remove(listNumber);
}
Future<bool> isFavorite({
required int listNumber,
}) async {
var isFavorite = false;
for (final favoriteItem in favoriteItemList) {
if (favoriteItem == listNumber) {
isFavorite = true;
}
}
return isFavorite;
}
}
こちらで記述したUserServiceの機能がどこでも呼び出すことができるようになりました。
実際に呼び出して使用方法までみていきましょう!
//ここで呼び出しする
final UserService userService = locator<UserService>();
IconButton(
onPressed: () async {
//呼び出し
final isFavorite = await userService.isFavorite(listNumber: index);
setState(() {
isFavorite
//呼び出し
? userService.removeFavoriteItem(listNumber: index)
//呼び出し
: userService.addFavoriteItem(listNumber: index);
});
},
icon: FutureBuilder(
future: future(listNumber: index),
builder: (context, snapshot) {
final isFavorite = snapshot.data;
if (isFavorite != null) {
return Icon(isFavorite ? Icons.star : Icons.star_border);
}
return const SizedBox();
},
),
)
呼び出しをすることでそのページ内で利用することができる!
かなりシンプルなコードでデータ管理ができましたね!
これを別ページでも呼び出すことができるのが魅力の一つかと思います
ちょっとした機能の実装に最適かも
解説がとてもわかりやすい
(今回のget_itとはの部分はこちらの内容から来ています。)
解説と簡単な使用例が載っていたのでこちらを参考にしました
(本記事のコード作成法はこのサイトを参考にしています。)
可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More可茂IT塾ではFlutterインターンを募集しています!可茂IT塾のエンジニアの判断で、一定以上のスキルをを習得した方には有給でのインターンも受け入れています。
Read More