Birleştirme
- Dart kursu
- İleri seviye
- Ders 83/83
- 6 dk
Tüm katmanları birleştirerek çalışan bir mini servis yazarsın.
App sınıfı ile birleştirme
Son adımda tüm parçaları birleştiririz. App sınıfı, bir TaskService alır ve summary() yöntemiyle tüm hizmetlerin özetini döndürür. Bu, bağımlılık enjeksiyonunun son halkasıdır.
Örnek: class App { final TaskService svc; App(this.svc); String summary() { return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; } }. App, servis ve hesap fonksiyonunu bir araya getirir. main içinde App(InMemoryTaskService()) ile oluşturulur. Bu proje zincirinde Shelf API, sqflite veritabanı ve Isolate hesabını aynı arabirim altında topladık; her parça bir öncekinin üzerine eklendi.
summary yöntemi
summary() yöntemi, uygulamanın durumunu tek bir dize olarak döndürür. svc.list().length ile görev sayısını, fib(10) ile hesap sonuçunu birleştirir. Bu, entegrasyonun doğrulandığı noktadır.
Örnek: String summary() { return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; }. main içinde print(app.summary()) ile yazdırılır. Çıktı Birleştirme: 1 görev, fib(10): 55 olur. Bu deterministiktir; her çalıştırmada aynı sonuçu verir. Proje boyunca kurduğumuz katmanlar (model, servis, API, veritabanı, isolate) burada tek bir özette birleşir.
Uygulama App sınıfı ve birleştirme
class App yaz; içinde final TaskService svc alanı, App(this.svc) kurucusu ve String summary() yöntemi olsun. summary içinde return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}'; yap. main içine final app = App(InMemoryTaskService()); ve print(app.summary()) ekle.
Başlangıç kodu
import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:isolate';
class Task {
final int id;
final String title;
Task({required this.id, required this.title});
}
abstract class TaskService {
List<Task> list();
}
class InMemoryTaskService implements TaskService {
@override
List<Task> list() => [Task(id: 1, title: 'görev 1')];
}
Response taskHandler(Request req, TaskService svc) {
return Response.ok('görevler: ${svc.list().length}');
}
class SqliteTaskService {
final Database db;
SqliteTaskService(this.db);
Future<List<Task>> all() async {
final rows = await db.query('tasks');
return rows.map((r) => Task(id: r['id'] as int, title: r['title'] as String)).toList();
}
}
int fib(int n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
}
Future<int> heavyCompute(int n) {
return Isolate.run(() => fib(n));
}
// App sınıfını yaz (TaskService al, summary yöntemi)
// main'de App oluştur ve summary yazdır
void main() {
// App ile özet yazdır
}Örnek çözüm
import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:isolate';
class Task {
final int id;
final String title;
Task({required this.id, required this.title});
}
abstract class TaskService {
List<Task> list();
}
class InMemoryTaskService implements TaskService {
@override
List<Task> list() => [Task(id: 1, title: 'görev 1')];
}
Response taskHandler(Request req, TaskService svc) {
return Response.ok('görevler: ${svc.list().length}');
}
class SqliteTaskService {
final Database db;
SqliteTaskService(this.db);
Future<List<Task>> all() async {
final rows = await db.query('tasks');
return rows.map((r) => Task(id: r['id'] as int, title: r['title'] as String)).toList();
}
}
int fib(int n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
}
Future<int> heavyCompute(int n) {
return Isolate.run(() => fib(n));
}
class App {
final TaskService svc;
App(this.svc);
String summary() {
return 'Birleştirme: ${svc.list().length} görev, fib(10): ${fib(10)}';
}
}
void main() {
final app = App(InMemoryTaskService());
print(app.summary());
}Beklenen çıktı
Birleştirme: 1 görev, fib(10): 55
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 App servis alanı
class App {
final ____ svc;
App(this.svc);
}
class App {
final TaskService svc;
App(this.svc);
}
Açıklama: App sınıfı bir TaskService alır.
2 Birleştirme parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
App |
Uygulama |
summary |
Özet |
TaskService |
Servis |
fib |
Fibonacci |
3 App.summary ne yapar?
- Şifreler
- Sıkıştırır
- Özet döndürür Doğru cevap
- Serileştirir
Açıklama: App.summary uygulamanın özetini döndürür.