Flutter Timer, bir uygulamada zamanlama işlemlerini gerçekleştirmek için kullanılan bir sınıftır. Flutter Timer, belirli bir süre sonunda işlemlerin gerçekleştirilmesini sağlar. Bu makalede, Flutter Timer ile ilgili tüm fonksiyonları ele alacağız.
Flutter Timer’ın Temel Kullanımı
Flutter Timer, dart:async kütüphanesi altında yer alan Timer sınıfından türetilmiştir. Timer sınıfı, bir işlemi belirli bir süre sonra yürütmek için kullanılır. Flutter Timer, Timer sınıfına ek olarak, süreye bağlı olarak tekrarlayan işlemler gerçekleştirmek için tasarlanmıştır.
Flutter Timer’ın temel kullanımı aşağıdaki gibi olacaktır:
1 2 3 4 5 |
import 'dart:async'; void main() { Timer(Duration(seconds: 5), () => print('Flutter Timer')); } |
Bu kod, 5 saniye sonra konsola “Flutter Timer” yazdıracaktır.
Flutter Timer’ın Çalışma Prensibi
Flutter Timer, bir işlemi belirli bir süre sonra yürütmek için kullanılır. Timer sınıfından türetilmiş olan Flutter Timer, süreye bağlı olarak tekrarlanan işlemler gerçekleştirmek için tasarlanmıştır. Flutter Timer, zamanlayıcı işlemi gerçekleştirmek için bir işlev alır. Bu işlev, zamanlayıcı süresi dolduğunda çalıştırılacaktır.
Flutter Timer, başlat () yöntemi çağrıldığında zamanlayıcıyı başlatır. Başlat () yöntemi, iki parametre alır: süre ve işlev. Süre, zamanlayıcının çalışma süresini belirlerken, işlev, zamanlayıcının süresi dolduğunda gerçekleştireceği işlemi belirler.
Flutter Timer’ın Özellikleri
Flutter Timer, birçok özellik içerir. Bu özellikler, zamanlayıcının işlevselliğini artırmak için tasarlanmıştır. Aşağıdaki özellikler, Flutter Timer ile ilgili en önemli özelliklerdir:
- Süre: Süre, zamanlayıcının çalışma süresini belirler. Süre, Duration sınıfından türetilir. Duration sınıfı, zaman aralıklarını ve süreleri temsil etmek için kullanılır.
- İşlev: İşlev, zamanlayıcının süresi dolduğunda gerçekleştireceği işlemi belirler. İşlev, Function
- Tekrarlayan İşlemler: Flutter Timer, tekrarlayan işlemler gerçekleştirmek için tasarlanmıştır. Bu özellik, zamanlayıcının süresi dolduğunda işlevi tekrarlayarak, belirli bir süre boyunca işlemleri gerçekleştirmesini sağlar.
- İş Parçacığı: Flutter Timer, varsayılan olarak ana iş parçacığında çalışır. Bu nedenle, zamanlayıcı işlemleri ana iş parçacığında gerçekleştirilecektir. Ancak, zamanlayıcı işlemleri farklı bir iş parçacığında gerçekleştirmek için de yapılandırılabilir.
Flutter Timer’ın Fonksiyonları
Flutter Timer, birçok fonksiyona sahiptir. Bu fonksiyonlar, zamanlayıcının işlevselliğini artırmak için tasarlanmıştır. Aşağıdaki fonksiyonlar, Flutter Timer ile ilgili en önemli fonksiyonlardır:
- start(): Zamanlayıcıyı başlatmak için kullanılır. Bu yöntem, zamanlayıcının süresi dolduğunda gerçekleştirilecek işlemi belirler.
1 2 |
Timer timer = Timer(Duration(seconds: 5), () => print('Flutter Timer')); timer.start(); |
- cancel(): Zamanlayıcıyı iptal etmek için kullanılır. Bu yöntem, zamanlayıcının süresi dolduğunda gerçekleştirilecek işlemi iptal eder.
1 2 |
Timer timer = Timer(Duration(seconds: 5), () => print('Flutter Timer')); timer.cancel(); |
- isActive: Zamanlayıcının aktif olup olmadığını belirlemek için kullanılır. Bu yöntem, zamanlayıcının aktif olup olmadığını kontrol eder ve true veya false değerleri döndürür.
1 2 3 4 |
Timer timer = Timer(Duration(seconds: 5), () => print('Flutter Timer')); print(timer.isActive); // true timer.cancel(); print(timer.isActive); // false |
- periodic(): Sürekli olarak tekrar eden işlemler için kullanılır. Bu yöntem, zamanlayıcının süresi dolduğunda gerçekleştirilecek işlemi tekrarlayarak, belirli bir süre boyunca işlemleri gerçekleştirir.
1 |
Timer.periodic(Duration(seconds: 5), (timer) => print('Flutter Timer')); |
Flutter Timer, mobil uygulama geliştiricilerinin zamanlama işlemlerini gerçekleştirmek için kullanabilecekleri çok yönlü bir araçtır. Flutter Timer, belirli bir süre sonunda işlemlerin gerçekleştirilmesini sağlar ve tekrarlayan işlemler için özellikler içerir. Bu makalede, Flutter Timer ile ilgili tüm fonksiyonları ele aldık ve kullanımı hakkında bilgi verdik.
Aşağıdaki örnekte, kullanıcının belirlediği bir süre boyunca geri sayım sayacı çalışacak ve her saniye güncellenecektir:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import 'dart:async'; import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( home: TimerPage(), )); } class TimerPage extends StatefulWidget { const TimerPage({Key? key}) : super(key: key); @override State<TimerPage> createState() => _TimerPageState(); } class _TimerPageState extends State<TimerPage> { int _secondsRemaining = 0; String buttonText = "Start Timer"; Timer? _timer; void _startTimer(int seconds) { setState(() { _secondsRemaining = seconds; }); _timer = Timer.periodic(Duration(seconds: 1), (timer) { setState(() { if (_secondsRemaining == 0) { _timer?.cancel(); buttonText = "Restart again"; print("Timer durduruldu."); } else { _secondsRemaining--; } }); }); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '$_secondsRemaining', style: TextStyle(fontSize: 30.0), ), ElevatedButton( onPressed: () { _startTimer(10); }, child: Text('$buttonText')) ], ), ), ); } } |
Yukarıdaki örnekte, _startTimer
fonksiyonu, kullanıcının belirlediği süreye göre geri sayım süresini ayarlar ve _timer
değişkenine bir Timer.periodic
nesnesi atar. Timer.periodic
fonksiyonu, belirli bir aralıkta geri sayım yapmak için kullanılır. Her saniye, geri sayım değeri bir azaltılarak, _secondsRemaining
değişkeni güncellenir ve ekranda gösterilir. Geri sayım sıfıra ulaştığında, _timer
iptal edilir.
Scaffold içinde, geri sayım değeri ekranda gösterilir ve ElevatedButton
üzerinde tıklanarak geri sayım başlatılır. Yukarıdaki örnek, Flutter Timer kullanarak basit bir geri sayım sayacı oluşturmanın temelini göstermektedir. Bu örneği istediğiniz gibi değiştirebilir ve özelleştirebilirsiniz.
Aşağıda saat,dakika ve saniye cinsinden saatin son hali görünmektedir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
import 'dart:async'; import 'dart:math'; import 'package:flutter/material.dart'; import 'dart:async'; import 'dart:math'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { static int secondsRemaining = DateTime.now().second; static int minutesRemaining = DateTime.now().minute; static int hoursRemaining = DateTime.now().hour; // static int secondsRemaining = 53; // static int minutesRemaining = 59; // static int hoursRemaining = 23; const MyApp({Key? key}) : super(key: key); @override State<MyApp> createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { Timer? _timer; void _startTimer() { _timer = Timer.periodic(Duration(seconds: 1), (timer) { setState(() { if (MyApp.secondsRemaining == 59) { MyApp.secondsRemaining = 0; if (MyApp.minutesRemaining == 59) { MyApp.minutesRemaining = 0; if (MyApp.hoursRemaining == 23) { MyApp.hoursRemaining = 0; } else { MyApp.hoursRemaining++; } } else { MyApp.minutesRemaining++; } } else { MyApp.secondsRemaining++; } }); }); } @override void initState() { // TODO: implement initState _startTimer(); super.initState(); } @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Timer', home: Scaffold( body: Center( child: Row( children: [ Expanded( child: Stack( alignment: Alignment.center, children: [ SizedBox( width: 300, height: 300, child: CustomPaint( foregroundPainter: ClockPainterHours(), painter: BackgroundPainter()), ), Text( MyApp.hoursRemaining < 10 ? "0" + MyApp.hoursRemaining.toString() : MyApp.hoursRemaining.toString(), style: TextStyle( color: Colors.white, fontSize: 30, fontWeight: FontWeight.bold, ), ), ], ), ), Expanded( child: Stack( alignment: Alignment.center, children: [ SizedBox( width: 300, height: 300, child: CustomPaint( foregroundPainter: ClockPainterMinute(), painter: BackgroundPainter()), ), Text( MyApp.minutesRemaining < 10 ? "0" + MyApp.minutesRemaining.toString() : MyApp.minutesRemaining.toString(), style: TextStyle( color: Colors.white, fontSize: 30, fontWeight: FontWeight.bold, ), ), ], ), ), Expanded( child: Stack( alignment: Alignment.center, children: [ SizedBox( width: 300, height: 300, child: CustomPaint( foregroundPainter: ClockPainterSeconds(), painter: BackgroundPainter()), ), Text( MyApp.secondsRemaining < 10 ? "0" + MyApp.secondsRemaining.toString() : MyApp.secondsRemaining.toString(), style: TextStyle( color: Colors.white, fontSize: 30, fontWeight: FontWeight.bold, ), ), ], ), ), ], )), ), ); } } class BackgroundPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { final backgroundPaint = Paint()..color = Colors.orangeAccent; canvas.drawCircle( Offset(size.width / 2, size.height / 2), size.width / 2, backgroundPaint, ); } @override bool shouldRepaint(CustomPainter oldDelegate) { return true; } } class ClockPainterHours extends CustomPainter { @override void paint(Canvas canvas, Size size) { final centerX = size.width / 2; final centerY = size.height / 2; // draw second progress final secondProgressPaint = Paint() ..color = Colors.white ..style = PaintingStyle.stroke ..strokeWidth = 8 ..strokeCap = StrokeCap.round; final secondProgress = (MyApp.hoursRemaining.toDouble() * 1000) / 24000 * 2 * pi; canvas.drawArc( Rect.fromCircle( center: Offset(centerX, centerY), radius: size.width / 2 - 10, ), -pi / 2, secondProgress, false, secondProgressPaint, ); } @override bool shouldRepaint(CustomPainter oldDelegate) { return true; } } class ClockPainterMinute extends CustomPainter { @override void paint(Canvas canvas, Size size) { final centerX = size.width / 2; final centerY = size.height / 2; // draw second progress final secondProgressPaint = Paint() ..color = Colors.white ..style = PaintingStyle.stroke ..strokeWidth = 8 ..strokeCap = StrokeCap.round; final secondProgress = (MyApp.minutesRemaining.toDouble() * 1000) / 60000 * 2 * pi; canvas.drawArc( Rect.fromCircle( center: Offset(centerX, centerY), radius: size.width / 2 - 10, ), -pi / 2, secondProgress, false, secondProgressPaint, ); } @override bool shouldRepaint(CustomPainter oldDelegate) { return true; } } class ClockPainterSeconds extends CustomPainter { @override void paint(Canvas canvas, Size size) { final centerX = size.width / 2; final centerY = size.height / 2; // draw second progress final secondProgressPaint = Paint() ..color = Colors.white ..style = PaintingStyle.stroke ..strokeWidth = 8 ..strokeCap = StrokeCap.round; final secondProgress = (MyApp.secondsRemaining.toDouble() * 1000) / 60000 * 2 * pi; canvas.drawArc( Rect.fromCircle( center: Offset(centerX, centerY), radius: size.width / 2 - 10, ), -pi / 2, secondProgress, false, secondProgressPaint, ); } @override bool shouldRepaint(CustomPainter oldDelegate) { return true; } } |
İlk Yorumu Siz Yapın