pump ve settle
- Flutter kursu
- İleri seviye
- Ders 63/69
- 4 dk
pump ve pumpAndSettle ile animasyonlu testler yapmayı öğrenirsin.
pump ve pumpAndSettle
pump, bir frame ilerletir; pumpAndSettle ise animasyon ve timer'lar bitene kadar frame'leri ilerletir. Animasyonlu widget'ları test ederken pump(Duration) ile zamanı ilerletir, sonra expect ile doğrularsın.
await tester.pumpWidget(MyAnimatedWidget());
await tester.pump(const Duration(seconds: 1));
await tester.pumpAndSettle();
expect(find.text('Bitti'), findsOneWidget);Duration ile pump
pump(Duration) belirli bir süredeki frame'leri tetikler; animasyonun ara durumlarını test etmeyi sağlar. pumpAndSettle ise animasyonlar bitene kadar 100ms aralıklarla ilerletir.
Uygulama Animasyonlu test
main içinde 'animasyon biter' adlı bir testWidgets testi yaz. pumpWidget ile MaterialApp(home: Text('Bitti')) render et. pumpAndSettle çağır. find.text('Bitti') ve findsOneWidget ile doğrula. Son olarak 'test tanimlandi' yazdır.
Başlangıç kodu
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
void main() {
// 'animasyon biter' adlı testWidgets testi yaz
// pumpWidget ile MaterialApp içinde Text render et
// pumpAndSettle ile animasyonların bitmesini bekle
// find.text ile metni bul ve findsOneWidget ile doğrula
// son olarak 'test tanimlandi' yazdir
}Örnek çözüm
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter/material.dart';
void main() {
testWidgets('animasyon biter', (tester) async {
await tester.pumpWidget(
const MaterialApp(home: Text('Bitti')),
);
await tester.pumpAndSettle();
expect(find.text('Bitti'), findsOneWidget);
});
print('test tanimlandi');
}Beklenen çıktı
test tanimlandi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 pumpAndSettle ne yapar?
- Widget'ı render eder
- Tüm animasyon ve timer'lar bitene kadar ilerletir Doğru cevap
- Testi durdurur
- Bir frame ilerletir
Açıklama: pumpAndSettle, artık değişiklik olmayana kadar frame'leri ilerletir; animasyonların tamamlanmasını bekler.
2 pumpAndSettle çağrısı
await tester.____();
await tester.pumpAndSettle();
Açıklama: tester.pumpAndSettle tüm animasyonlar bitene kadar frame ilerletir; pump ise yalnızca bir frame veya belirli Duration kadar ilerletir.
3 pump eşleşmeleri
| Kavram | Anlamı |
|---|---|
pump |
Bir frame ilerletir |
pumpAndSettle |
Animasyon bitene kadar ilerletir |
Duration |
Zaman aralığı |
pumpWidget |
İlk render |