Flutter Stil ve Temalar 💫 🌌 ✨

Theme widget’ı, uygulamanızda renkler, yazı tipi stilleri, buton stilleri gibi birçok varsayılan stili ayarlamanıza olanak tanır.
Bu bölümde, Flutter’daki diğer önemli stil parçalarının yanı sıra Temanın nasıl kullanılacağına bakacağız: media query, ya…


This content originally appeared on DEV Community and was authored by Gülsen 🦋

Theme widget'ı, uygulamanızda renkler, yazı tipi stilleri, buton stilleri gibi birçok varsayılan stili ayarlamanıza olanak tanır.
Bu bölümde, Flutter'daki diğer önemli stil parçalarının yanı sıra Temanın nasıl kullanılacağına bakacağız: media query, yazı tipleri, animasyonlar ve Flutter'ın Color class'ı.

Theme widget

Theme widget'ı, bazı durumlarda uygulamanızın tamamına otomatik olarak uygulanacak stilleri bildirmenizi sağlar. Stillerinizin uygulanmadığı veya geçersiz kılınması gerektiği durumlarda, Tema widget aracına widget öğesi ağacınızın herhangi bir yerinden erişebilirsiniz.

Temanızın kontrol edebileceği renkle ilgili birçok stil hakkında size fikir vermesi için, widget'ta ayarlayabileceğiniz ve uygulamanın tamamına nüfuz edecek özelliklerin bazıları (not: bu özellikler, uygulamanızdaki tüm widget'ları etkiler):

brightness (karanlık veya açık bir tema)
primarySwatch
primaryColor

Belirli özellikleri kontrol eden bazı özellikler:

canvasColor
scaffoldBackgroundColor
dividerColor
cardColor
buttonColor
errorColor

Bunlar renkler için mevcut olan yaklaşık 20 argumandan yalnızca 6 tanesidir. Yazı tipleri sayfa animasyonları, icon stilleri ve daha fazlası için Thema'ya iletilebilecek neredeyse 20 arguman daha vardır.

Theme.primaryColor, uygulamanızdaki hemen hemen tüm widget'ları etkiler: tüm widget'ların rengini istediğiniz renkle değiştirir.

Uygulamanızda temaları kullanma

Bir temayı yapılandırmak için kullandığınız sınıfa ThemeData adı verilir. Uygulamanıza bir tema eklemek için MaterialApp.theme özelliğine bir ThemeData nesnesi iletirsiniz. Ayrıca kendi Thema widget aracınızı oluşturabilir ve ona bir ThemeData nesnesi iletebilirsiniz. Thema sadece bir widget'tır, yani onu herhangi bir widget'ı kullanabileceğiniz her yerde kullanabilirsiniz!

final theme = ThemeData(
  fontFamily: "Cabin",
  primaryColor: AppColor.midnightSky,
  primaryTextTheme:
      Theme.of(context).textTheme.apply(
        bodyColor: AppColor.textColorDark,
        displayColor: AppColor.textColorDark,
      ),
  textTheme: Theme.of(context).textTheme.apply(
        bodyColor: AppColor.textColorDark,
        displayColor: AppColor.textColorDark,
      ),
);

ThemeData'yı kullanabileceğiniz diğer durum, bir stil özelliğini açıkça ayarlamak istediğiniz zamandır. Örneğin, bir container'ın background'ını temanın primaryColor rengi olacak şekilde ayarlamak isteyebilirsiniz.BuildContext sayesinde uygulamanızın herhangi bir yerinde bu tema verilerini alabilirsiniz (BuildContext bir widget'ın widget ağacındaki yeri hakkında bilgi sağlar).

MediaQuery ve yöntemi

Benim gibi web geliştirme alanından geldiyseniz, Flutter'daki yazı stillerini başta spacing ve layout olmak üzere garip bulabilirsiniz. Web'de CSS kullanırsınız; ve CSS'de, boyutlandırmanın devreye girdiği her yerde kullanabileceğiniz birçok farklı ölçü birimi vardır. Standart piksele ek olarak, öğenin kaplayabileceği alan yüzdesine dayalı ölçüm birimlerinin yanı sıra viewport'un boyutuna dayalı bir ölçüm birimi de vardır.

Flutter'da yalnızca bir ölçü birimi vardır: logical (mantıksal) piksel. Sonuç olarak, çoğu yerleşim ve boyutlandırma problemi matematikle çözülür ve bu matematiğin çoğu ekran boyutuna dayanır.Örneğin, bir widget'ın ekranın genişliğinin üçte biri olmasını isteyebilirsiniz. Yüzde ölçü birimi olmadığından, MediaQuery widget'ını kullanarak ekran boyutunu programlı olarak almanız gerekir.

MediaQuery, uygulamanın herhangi bir yerinde ona erişmek için BuildContext'i kullanabileceğiniz Thema'ya benzer bir widget öğesidir. Bu MediaQuery sınıfının of methoduyla yapılır. of methodu ağacı arar, en yakın MediaQuery sınıfını bulur ve uygulamanızın herhangi bir yerinde o MediaQuery örneğine bir referans verir.

MediaQuery sınıfı, uygulamanızın işlendiği ekranın tamamının boyut bilgisini almak için harikadır. Bu bilgilere, aygıtın genişliği ve yüksekliği ile bir Size nesnesi döndüren MediaQuery.of(context).size statik methodunu çağırarak erişebilirsiniz.

Örneğin, telefonun genişliğinin %80'ini elde etmek için şunu yazabilirsiniz:

final width = MediaQuery.of(context).size.width * 0.8;

Bir widget'ın build context'i , Flutter'a bu widget'ın ağaçtaki yerine bir referans verir.

Uygulamanızın üzerinde çalıştığı fiziksel cihaz hakkında belirli bilgiler almaya çalışıyorsanız, bakmanız gereken ilk yer MediaQuery'dir.

• Telefonun şu anda dikey ya da yatay olduğu bilgisi.
• Erişilebilirlik nedenleriyle animasyonları devre dışı bırakmak ve renkleri değiştirmek.
• Telefona, kullanıcının metin boyutu faktörünün büyütülmüş olup olmadığını sormak.
• Tüm uygulama için padding'i ayarlamak.

ScreenAwareSize method

return Scaffold(
  appBar: PreferredSize(
    preferredSize: Size.fromHeight(ui.appBarHeight(context)),
    child: ...
    ),
  ),

Size.fromHeight methodu, verilen height ve infinite (sonsuz) width de bir Size nesnesi oluşturan Size sınıfı için bir constructor'dır.

final double kToolbarHeight = 56.0;
double appBarHeight(BuildContext context) {
  return screenAwareSize(kToolbarHeight, context);
}

const double kBaseHeight = 1200.0;
double screenAwareSize(double size, BuildContext context) {
  double drawingHeight = MediaQuery.of(context).size.height
        - MediaQuery.of(context).padding.top;
  return size * drawingHeight / kBaseHeight;
}

MediaQuery.of(context).size, ekran boyutunu temsil eden bir boyut döndürür. MediaQuery.of(context).padding, uygulamanın kendisi için padding ayrıntılarını veren bir Padding döndürür; yani, cihaz ekranının kenarı ile üst düzey widget öğesi arasındaki dolguyu.

Bu methodların amacı, PreferredSize widget aracı için doğru boyutlandırmayı sağlamak (ve MediaQuery sınıfını çalışırken görmek) App bar'ın yüksekliğini herhangi bir ekranda uygun boyutuna eşlemektir. Yani, "ortalama" ekran 1.200 piksel yüksekliğindeyse ve bu ekranda app bar 56 piksel yüksekliğindeyse, bu fonksiyonlar herhangi bir ekran boyutunda app bar için eşdeğer yüksekliği verir.

return Scaffold(
  appBar: PreferredSize(
    preferredSize: Size.fromHeight(ui.appBarHeight(context)),
    child: ...
    ),
  ),

Resource: Flutter in Action chapter-4 ✨


This content originally appeared on DEV Community and was authored by Gülsen 🦋


Print Share Comment Cite Upload Translate Updates
APA

Gülsen 🦋 | Sciencx (2022-03-26T22:39:01+00:00) Flutter Stil ve Temalar 💫 🌌 ✨. Retrieved from https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/

MLA
" » Flutter Stil ve Temalar 💫 🌌 ✨." Gülsen 🦋 | Sciencx - Saturday March 26, 2022, https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/
HARVARD
Gülsen 🦋 | Sciencx Saturday March 26, 2022 » Flutter Stil ve Temalar 💫 🌌 ✨., viewed ,<https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/>
VANCOUVER
Gülsen 🦋 | Sciencx - » Flutter Stil ve Temalar 💫 🌌 ✨. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/
CHICAGO
" » Flutter Stil ve Temalar 💫 🌌 ✨." Gülsen 🦋 | Sciencx - Accessed . https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/
IEEE
" » Flutter Stil ve Temalar 💫 🌌 ✨." Gülsen 🦋 | Sciencx [Online]. Available: https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/. [Accessed: ]
rf:citation
» Flutter Stil ve Temalar 💫 🌌 ✨ | Gülsen 🦋 | Sciencx | https://www.scien.cx/2022/03/26/flutter-stil-ve-temalar-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.