Flutter’da API İsteği Sonucu Klasörde Nasıl Saklanır?

Alperenkuru
2 min readOct 5, 2023

Bu yazı dil eğitimi üzerine pratik yapmaya olanak sağlayan projemde kullandığım kütüphaneler ve oluşturduğum yapıları yayınladığım bir seriden bir parçadır. Bu yazıda, Flutter uygulamalarında, bir API’den veri alındığında bu verileri yerel depolama alanında saklamak sıklıkla gerekebilir. Bu yazıda, Flutter’da bir API isteği sonucu alınan veriyi bir klasör içinde nasıl saklayacağınızı ve daha sonra bu verilere nasıl erişeceğinizi öğreneceksiniz. Bu işlem, uygulamanızın çevrimdışı kullanımı veya veri güncellemelerini yönetmek için kullanışlıdır. Eğer bu yazı ilginizi çekerse, diğer yazılarıma da göz atmayı unutmayın.

1. API İsteği ve Veri Alma

  • API’den veri alma ve bu veriyi işleme adımları.
static Future<dynamic> keywordListService() async {
// API isteğini gerçekleştir
http.Response response = await http.get(Uri.parse(keywordListUrl));
String responseBody = response.body;
print(responseBody);
try {
// Başarılı cevabı al ve döndür
String responseBody = response.body;
// JSON verisini Dart nesnesine dönüştür
List<dynamic> jsonData = json.decode(responseBody);

if (response.statusCode == 200 && jsonData.isNotEmpty) {
List<Map<String, dynamic>> keywordList = [];

for (var item in jsonData) {
int id = item['<Id>'] as int;
String tr = item['<TR>'] as String;
String en = item['<EN>'] as String;
// Diğer değerlerin alınması...

ApiKeywordListResponse keywordResponse = ApiKeywordListResponse(id, tr, en, otherParameters);
keywordList.add(keywordResponse.toJson());
}

// Dosya sisteminde bir klasör oluştur
Directory appDocDir = await getApplicationDocumentsDirectory();
Directory dataDir = Directory('${appDocDir.path}/api_data');
if (!(await dataDir.exists())) {
await dataDir.create(recursive: true);
}

// Dosya sisteminde bir dosya oluştur ve verileri yaz
File file = File('${dataDir.path}/keyword.txt');
await file.writeAsString(jsonEncode(keywordList));

return KeywordListResult(true, "Veri Başarıyla Kaydedildi");
} else {
return KeywordListResult(false, "Veri Kaydetme Başarısız");
}
} catch (e) {
return KeywordListResult(false, "Hata: $e");
}
}

2. Verilere Erişim ve Kullanım

  • Saklanan verilere nasıl erişeceğiniz ve bu verileri nasıl kullanacağınız.
Future<void> loadKeywords() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
Directory dataDir = Directory('${appDocDir.path}/api_data');
File file = File('${dataDir.path}/keyword.txt');

bool fileExists = await file.exists();

if (fileExists) {
String data = await file.readAsString();
List<dynamic> jsonData = json.decode(data);

// Verileri kullanma adımları...
} else {
// Dosya bulunamazsa veya okuma hatası olursa başka bir işlem yapma adımları...
}
}

3. Veri Saklama İpuçları

  • Verileri klasörde saklarken dikkate almanız gereken bazı önemli ipuçları.

Bu yazıda, Flutter uygulamalarında bir API isteği sonucu alınan veriyi bir klasör içinde nasıl saklayabileceğinizi ve daha sonra bu verilere nasıl erişebileceğinizi öğrendik. Bu beceri, uygulamanızın verileri çevrimdışı olarak saklaması veya veri güncellemelerini yönetmesi gerektiğinde oldukça kullanışlıdır. Veri saklama ve erişim adımlarını takip ederek uygulamanızı daha güçlü ve güvenilir hale getirebilirsiniz.

--

--