Я начал изучать Flutter около месяца go, и я прочитал и посмотрел несколько хороших учебных пособий, лучшим из которых является адаптивная архитектура с провайдером и модели просмотра для предотвращения повторения кода при создании приложений.
Сейчас я пишу свое самое первое приложение для своей работы, и у меня есть несколько вызовов API. Я не нашел хорошую статью или видео, но учил, как правильно организовать запросы API в отдельные файлы, чтобы предотвратить повторение, поэтому я прихожу сюда, чтобы спросить ваше руководство по этому поводу.
Вот как я сделал это. Я думал о создании сервиса api.dart
, который реализует методы пакета http
. Пока это только get()
, но я уже вижу, что другие в конечном итоге будут слишком много повторять условие.
class Api {
Future<dynamic> get(String url) async {
final response = await http.get('$kBaseUrl/$url');
if (response.statusCode != 200) {
throw Exception(json.decode(response.body)[0]['mensagem']);
}
return json.decode(response.body);
}
}
Затем в единственной модели представления, которую я пока имею, я реализую get()
из api.dart
при нажатии кнопки, например. model
внутри кнопки - это то, как выполняется архитектура 1015 *, о которой я упоминал выше.
Future<void> submit() async {
print('Email: $email, password: $password');
get();
}
Future get() async {
_setBusy(true); // loading status on
_setError(''); // clean errors
try {
await _api.get('clientes');
} catch (e) {
_setError(e.message);
}
_setBusy(false); // loading status off
}
PrimaryButton(
onTap: () {
model.submit();
},
disabled: model.busy, // the loading state to modify the styling of the button
),
И это все. У меня такое ощущение, что это могло бы быть намного лучше, и я бы предпочел, чтобы с самого начала был наилучший возможный способ, чтобы я мог больше узнать о структурировании своих файлов и поддержании их в чистоте по мере роста приложения. Я буду признателен за любые инструкции, код, статью, видео и / или хранилище.