GET-запрос http.get в Flutter
После
flutter pub get
подключают библиотеку с префиксом:
import 'package:http/http.dart' as http;.
Простой GET - функция http.get
с Uri.parse('https://…').
Ответ - объект Response. Поле
statusCode для успеха обычно
равно 200; тело текста лежит в
body строкой. Асинхронный вызов
удобно обернуть в
FutureBuilder
или await в методе кнопки:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(const MaterialApp(home: GetDemoPage()));
}
class GetDemoPage extends StatefulWidget {
const GetDemoPage({super.key});
@override
State<GetDemoPage> createState() => _GetDemoPageState();
}
class _GetDemoPageState extends State<GetDemoPage> {
late Future<String> loadQuote;
@override
void initState() {
super.initState();
loadQuote = fetchQuote();
}
Future<String> fetchQuote() async {
final uri = Uri.parse('https://jsonplaceholder.typicode.com/todos/1');
final response = await http.get(uri);
if (response.statusCode != 200) {
throw Exception('Code ${response.statusCode}');
}
return response.body;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('GET')),
body: Padding(
padding: const EdgeInsets.all(16),
child: FutureBuilder<String>(
future: loadQuote,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
}
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
}
if (snapshot.hasData) {
return SingleChildScrollView(
child: Text(snapshot.data!),
);
}
return const SizedBox.shrink();
},
),
),
);
}
}
Запросите
https://jsonplaceholder.typicode.com/posts/1,
проверьте код 200 и выведите первые
200 символов body на экране
моноширинным TextStyle.