Single Responsibility Principle(SRP)
Prinsip iki nyatakake yen saben kelas utawa widget kudu duwe tanggung jawab siji. Iku nandheske sing kelas utawa widget kudu nindakake siji fungsi tartamtu lan ora duwe kakehan alasan kanggo ngganti.
Conto: Gawe widget kanggo nampilake informasi pangguna lan widget kapisah kanggo nampilake dhaptar kiriman.
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
Prinsip iki nyengkuyung nambah fungsi kanthi nambah kode anyar tinimbang ngowahi kode sing wis ana.
Conto: Gawe widget kanggo nampilake macem-macem jinis produk ing aplikasi e-commerce.
abstract class ProductWidget extends StatelessWidget {
// Common logic for displaying products
}
class ElectronicProductWidget extends ProductWidget {
// Logic to display electronic products
}
class ClothingProductWidget extends ProductWidget {
// Logic to display clothing products
}
Liskov Substitution Principle(LSP)
Prinsip iki negesake manawa obyek saka kelas asale kudu bisa diganti kanggo obyek kelas dasar tanpa mengaruhi akurasi program kasebut.
Conto: Nggawe widget kanggo ngatur wangun geometris.
abstract class ShapeWidget extends StatelessWidget {
// Common logic for displaying shapes
}
class RectangleWidget extends ShapeWidget {
// Logic to display rectangles
}
class CircleWidget extends ShapeWidget {
// Logic to display circles
}
Interface Segregation Principle(ISP)
Prinsip iki menehi saran supaya antarmuka rusak dadi luwih cilik supaya ora meksa kelas utawa widget supaya bisa ngetrapake metode sing ora dibutuhake.
Conto: Antarmuka kanggo nganyari lan nampilake data.
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
Prinsip iki nyaranake nggunakake injeksi dependensi kanggo ngatur dependensi.
Conto: Gunakake injeksi dependensi kanggo ngatur dependensi ing widget.
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
Elinga yen ngetrapake SOLID prinsip Flutter kudu ditindakake kanthi fleksibel adhedhasar tujuan spesifik proyek sampeyan lan pangerten babagan SOLID lan Flutter.