Tìm hiểu về REST API trong Flutter
https://api.example.com/users
[
  {
    "id": 1,
    "name": "Nguyen Van A",
    "email": "van.a@example.com"
  },
  {
    "id": 2,
    "name": "Tran Thi B",
    "email": "thi.b@example.com"
  }
]
dependencies:
  http: ^0.15.0
flutter pub get
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<List<dynamic>> fetchUsers() async {
  final response = await http.get(Uri.parse('https://api.example.com/users'));

  if (response.statusCode == 200) {
    return jsonDecode(response.body);
  } else {
    throw Exception('Failed to load users');
  }
}
class UserList extends StatelessWidget {
  final Future<List<dynamic>> users;

  UserList({required this.users});

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<List<dynamic>>(
      future: users,
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator();
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}');
        } else {
          return ListView.builder(
            itemCount: snapshot.data?.length,
            itemBuilder: (context, index) {
              return ListTile(
                title: Text(snapshot.data?[index]['name']),
                subtitle: Text(snapshot.data?[index]['email']),
              );
            },
          );
        }
      },
    );
  }
}
Future<void> createUser(String name, String email) async {
  final response = await http.post(
    Uri.parse('https://api.example.com/users'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({'name': name, 'email': email}),
  );

  if (response.statusCode == 201) {
    print('User created successfully');
  } else {
    throw Exception('Failed to create user');
  }
}
try {
  final users = await fetchUsers();
  print(users);
} catch (error) {
  print('Error fetching users: $error');
}