Dart'ta bir değerin private olduğunu anlatmak için başına alt çizgi '_' işareti konulur. Örneğin: _MyHomePageState isimlendirmesi alt çizgi kullanılarak yapılmıştır ve bu, bu sınıfın private olarak işaretlendiğini gösterir. Tüm ifadeler(statements) private olabilir. Bu sınıf gibi private olan bir üst düzey değer yalnızca geçerli dosyada bulunur. Değişken veya fonksiyon gibi bir sınıf üyesi private olarak işaretlenmişse, yalnızca o sınıfın içinde kullanılabilir.
Aşağıdaki class'ı düşünün:
class Cat {
String name;
String _color;
void meow() => print("meow");
void _pur() => print("prrrr");
}
Ardından, onunla etkileşim kurmayı düşünün:
Cat nora = Cat();
nora.name = "Nora"; // Okay
nora._color = "Orange"; // Invalid!
nora.meow(); // Okay
nora._pur(); // Invalid!
Private olarak işaretlenmiş değişken ya da fonksiyonlara tanımlandıkları class'ın dışından erişilemez.
Private değişkenler ve sınıf üyeleri, class API'lerini daha okunabilir hale getirmek için Dart'ta oldukça fazla kullanılır.
Her bir widget sınıfının bir build methodu olması gerekir. Anca
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
// ..
}
}
Gördüğünüz gibi, StatefulWidget sınıfının bir build methodu yok. Ancak her durum bilgisi olan(stateful) widget öğesi, bir build methodu olan ilişkili bir state objesine sahiptir. StatefulWidget ve State çiftini aynı olarak düşünebilirsiniz.
Aslında, stateful widget'lar değişmezdir(immutable) (tıpkı stateless widget'lar gibi), ancak ilişkili state objeleri akıllıdır, değişebilir ve Flutter widgetları yeniden oluştururken bile duruma tutunabilir.
MyHomePage, uygulamanın ortasındaki sayacın durumunu yönettiği için bir stateful widget öğesidir. Bu butona dokunduğunuzda, _incrementCounter adlı bir method çalıştırır:
void _incrementCounter() {
setState(() {
_counter++;
});
}
Resource: Flutter in Action chapter-3
Top comments (2)
Merhaba önceikle dartta yeniyim .Bu yüzden sorum saçma gelirse mazur görün.
Şimdi private kullanmamızın sebebi değişkenimizi değiştirmemek değil mi. bu yüzden private kullanmak yerine neden final veya const kullanmıyoruz?
Merhaba :)
Private bir değişken kullanmamız değişkenimizin değerini değiştiremeyeceğimiz anlamına gelmez. Değeri tabiki de değiştirebilirsiniz. Private değerler yalnızca tanımlandıkları class'a özel değerlerdir. Bu değerlere tanımlandıkları class'ın dışından erişilemez.