import 'package:dio/dio.dart';
import 'package:laravel_rest_api_flutter/laravel_rest_api_flutter.dart';
final dio = Dio(
BaseOptions(
baseUrl: 'https://api.example.com',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_TOKEN',
},
),
);
final client = ApiHttpClient(dio: dio);
class ItemsRepository
with
SearchFactory<Map<String, dynamic>>,
DeleteFactory<Map<String, dynamic>>,
MutateFactory,
ActionsFactory {
final RestApiClient client;
ItemsRepository(this.client);
@override
String get baseRoute => '/items';
@override
RestApiClient get httpClient => client;
@override
Map<String, dynamic> fromJson(Map<String, dynamic> json) => json;
@override
void onCatchError(
RestApiResponse? response,
Object exception,
StackTrace stacktrace,
) {}
}
final repo = ItemsRepository(client);
final res = await repo.search(
text: TextSearch(value: 'hammer'),
page: 1,
limit: 10,
sorts: [Sort(field: 'created_at', direction: 'desc')],
);
print(res.data); // List<Map<String, dynamic>>
final res = await repo.mutate(
body: LaravelRestApiMutateBody(
mutate: [
Mutation(
operation: MutationOperation.create,
attributes: {'name': 'New item'},
),
],
),
);
print(res.data?.created);
final res = await repo.actions(
actionUriKey: 'publish',
data: LaravelRestApiActionsBody(
fields: [
Action(name: 'published_at', value: DateTime.now().toIso8601String()),
],
),
);
print(res.data); // impacted count