getInstance
- Flutter kursu
- Orta seviye
- Ders 37/99
- 4 dk
SharedPreferences.getInstance ile async erişim öğrenirsin.
getInstance nedir?
SharedPreferences sınıfına erişmek için getInstance() statik metodunu çağırırsın. Bu metod bir Future<SharedPreferences> döndürür çünkü verileri diskten okur. Bu yüzden await ile beklemen gerekir.
final prefs = await SharedPreferences.getInstance();
// artık prefs üzerinden set/get yapabilirsinasync main ve ensureInitialized
main fonksiyonunda shared_preferences kullanacaksan main'i async yap ve önce WidgetsFlutterBinding.ensureInitialized() çağır. Bu, Flutter bağlamının hazır olmasını sağlar; aksi halde async main'de hata alırsın.
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
runApp(MyApp());
}Uygulama async main ile getInstance çağır
main'i async yap, WidgetsFlutterBinding.ensureInitialized() çağır, await ile getInstance()'ı al ve 'instance ready' yazdır.
Başlangıç kodu
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
// ensureInitialized ve getInstance çağır
// 'instance ready' yazdır
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: Text('getInstance')));
}
}Örnek çözüm
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final prefs = await SharedPreferences.getInstance();
print('instance ready');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body: Center(child: Text('getInstance')));
}
}Beklenen çıktı
instance ready
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 getInstance neden async'tir?
- UI çizdiği için
- Kod derlediği için
- Diskten veri okuduğu için Doğru cevap
- İnternetten veri indirdiği için
Açıklama: getInstance verileri diskten okuyarak SharedPreferences örneğini hazırlar; bu işlem zaman aldığı için Future döndürür.
2 await ile getInstance bekle
final prefs = ____ SharedPreferences.getInstance();
final prefs = await SharedPreferences.getInstance();
Açıklama: getInstance bir Future döndürür; sonucu almak için await kullanırsın.
3 getInstance parçaları
| Kavram | Anlamı |
|---|---|
getInstance |
SharedPreferences örneği döndürür |
await |
Future sonucunu bekler |
async |
Fonksiyonu async işaretler |
Future |
Async işlemin sonucunu temsil eder |