DataStore を削除する
DataStore の呼び出しを移行する前に、Amplify DataStore をプロジェクトから削除し、API プラグインを設定してモデルを使用するようにします。
依存関係を更新する
pubspec.yaml から amplify_datastore パッケージを削除し、amplify_api パッケージが存在することを確認します:
dependencies: # このようにコメントアウト: # amplify_datastore: ^2.x.x
# これらを保持または追加: amplify_flutter: ^2.x.x amplify_api: ^2.x.x amplify_auth_cognito: ^2.x.x # 認証を使用している場合pubspec.yaml を更新した後、以下を実行します:
flutter pub getAmplify 設定を更新する
DataStore を使用する場合、ModelProvider は AmplifyDataStore プラグインに渡されていました。DataStore を削除した後、ModelProvider.instance を代わりに AmplifyAPI プラグインに渡す必要があります。これを行わないと、ModelMutations と ModelQueries はモデルをシリアライズおよびデシリアライズできず、API 呼び出しは実行時に失敗します。
前(DataStore を使用):
import 'package:amplify_datastore/amplify_datastore.dart';import 'package:amplify_api/amplify_api.dart';import 'models/ModelProvider.dart';
final datastorePlugin = AmplifyDataStore(modelProvider: ModelProvider.instance);final api = AmplifyAPI();
await Amplify.addPlugins([datastorePlugin, api]);await Amplify.configure(amplifyConfig);後(API のみ):
import 'package:amplify_api/amplify_api.dart';import 'package:amplify_api/model_queries.dart';import 'package:amplify_api/model_mutations.dart';import 'package:amplify_api/model_subscriptions.dart';import 'models/ModelProvider.dart';
// ModelProvider を API プラグインに渡すfinal api = AmplifyAPI( options: APIPluginOptions(modelProvider: ModelProvider.instance),);
await Amplify.addPlugins([api]);await Amplify.configure(amplifyConfig);すべての DataStore 呼び出しを削除する
コードベースをチェックして、すべての DataStore 呼び出しを削除または置き換えます:
| DataStore の呼び出し | API 置き換え |
|---|---|
Amplify.DataStore.save() | ModelMutations.create() / .update() で Amplify.API.mutate() |
Amplify.DataStore.delete() | ModelMutations.delete() で Amplify.API.mutate() |
Amplify.DataStore.query() | ModelQueries.get() / .list() で Amplify.API.query() |
Amplify.DataStore.observe() | ModelSubscriptions.onCreate/onUpdate/onDelete() で Amplify.API.subscribe() |
Amplify.DataStore.observeQuery() | 初期リストクエリ + 3 つのサブスクリプション(Amplify API への移行参照) |
Amplify.DataStore.clear() | 不要になりました(クリアするローカル DataStore がありません) |
Amplify.DataStore.start() / stop() | 不要になりました |