SDKs & Guides
Flutter
Add nutrition data to your Flutter app
Search foods, scan barcodes, and display nutrition data in Flutter using the ChowAPI REST API.
Prerequisites
- Flutter 3.10+
- Dart 3.0+
- ChowAPI key
Installation
1
Add http package
dart pub add http2
Store your API key
lib/config.dart
// In lib/config.dart
const chowApiKey = String.fromEnvironment('CHOWAPI_KEY',
defaultValue: 'chow_live_YOUR_KEY');Code examples
Search foods
Create a ChowAPI client and search for foods.
lib/chow_api.dart
import 'dart:convert';
import 'package:http/http.dart' as http;
class ChowApiClient {
final String apiKey;
final String baseUrl = 'https://api.chowapi.dev/v1';
ChowApiClient(this.apiKey);
Future<List<Map<String, dynamic>>> search(String query, {int limit = 10}) async {
final uri = Uri.parse('$baseUrl/search?q=$query&limit=$limit');
final res = await http.get(uri, headers: {
'Authorization': 'Bearer $apiKey',
});
if (res.statusCode != 200) throw Exception('Search failed: ${res.body}');
final data = jsonDecode(res.body);
return List<Map<String, dynamic>>.from(data['results']);
}
}Flutter Pattern
State management with Riverpod
Use Riverpod for reactive food search state management.
lib/providers/food_provider.dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
final searchQueryProvider = StateProvider<String>((ref) => '');
final foodSearchProvider = FutureProvider.autoDispose<List<Map<String, dynamic>>>((ref) async {
final query = ref.watch(searchQueryProvider);
if (query.length < 2) return [];
final client = ChowApiClient('chow_live_YOUR_KEY');
return await client.search(query);
});