DEV Community

Cover image for Flutter Constants Best Practices ­čĺź ­čîî ÔťĘ
G├╝lsen Keskin
G├╝lsen Keskin

Posted on • Updated on

Flutter Constants Best Practices ­čĺź ­čîî ÔťĘ

Flutter da t├╝m constant'lar─▒ bir dosyada tutman─▒n en iyi yolu nedir?

Java ve C#'da her tan─▒m bir s─▒n─▒f─▒n i├žinde olmal─▒d─▒r, bu nedenle yaln─▒zca statik ├╝yelerin var oldu─ču s─▒n─▒flar yayg─▒n olarak kullan─▒l─▒r.

Dart'─▒n ├╝st d├╝zey i┼člevleri, de─či┼čkenleri ve sabitleri vard─▒r, bu nedenle yaln─▒zca bir ┼čeyi tan─▒mlamak i├žin bir s─▒n─▒fa ihtiyac─▒n─▒z yoktur. ─░stedi─činiz bir namespace ise kitapl─▒k(library) daha uygundur. Kitapl─▒klar i├že aktarma ├Âneklerini ve birle┼čtiricileri show/hide destekler. Bunlar, kodunuzun t├╝keticisinin ad ├žak─▒┼čmalar─▒n─▒ kendileri i├žin en iyi ┼čekilde i┼člemesini sa─člayan g├╝├žl├╝ ara├žlard─▒r.

Bir fonksiyon veya de─či┼čken mant─▒ksal olarak bir s─▒n─▒fa ba─čl─▒ de─čilse, onu en ├╝st d├╝zeye koyun. Ad ├žak─▒┼čmalar─▒ndan endi┼če ediyorsan─▒z, ona daha kesin bir ad verin veya ├Ânekle import edilebilen ayr─▒ bir library'e ta┼č─▒y─▒n.

Do─čru kullan─▒m:

DateTime mostRecent(List<DateTime> dates) {
  return dates.reduce((a, b) => a.isAfter(b) ? a : b);
}

const _favoriteMammal = 'weasel';
Enter fullscreen mode Exit fullscreen mode

Yanl─▒┼č kullan─▒m:

class DateUtils {
  static DateTime mostRecent(List<DateTime> dates) {
    return dates.reduce((a, b) => a.isAfter(b) ? a : b);
  }
}

class _Favorites {
  static const mammal = 'weasel';
}
Enter fullscreen mode Exit fullscreen mode

├ľrnek Uygulama:

constants.dart ad─▒nda yeni bir dosya olu┼čturun.

A┼ča─č─▒da g├Âr├╝ld├╝─č├╝ gibi constantlar─▒n─▒z─▒ bildirin.

 const succesMessage=" ─░┼člem ba┼čar─▒l─▒.";

 // Api related 
 const apiBaseURL = "https://baseurl.com";

 const userLoginApi = "login";
 const userSignupApi = "signup";

 // Shared Preference keys 
 const kDeviceName = "device_name";
 const kDeviceUDID = "device_id";

 // Asset Constants
 const navBarLogoImage = "assets/images/home_images/sample.png"
Enter fullscreen mode Exit fullscreen mode

Stil kurallar─▒nda belirtildi─či gibi constantlar─▒n─▒z─▒ isimlendirirken lowerCamelCase bi├žimlendirmesini kulland─▒─č─▒n─▒zdan emin olun. bkz: navBarLogoImage

Ard─▒ndan, sabitlere eri┼čmesi gereken herhangi bir dart dosyas─▒n─▒n en ├╝st├╝ne a┼ča─č─▒daki import ifadesini ekleyin:

import 'constants.dart' as constants;

constants.dart dosyan─▒z farkl─▒ bir dizindeyse , import ifadenizde constants.dart yolunu belirtmeniz gerekti─čini unutmay─▒n.

Absolute path ├Ârne─či:

import 'package:<your_app_name>/common/constants.dart' as constants;

Art─▒k bu s├Âzdizimi ile sabitlerinize kolayca eri┼čebilirsiniz:

String a = constants.succesMessage;

References:
https://dart.dev/guides/language/effective-dart/design
https://dart.dev/guides/language/effective-dart/style
https://stackoverflow.com/questions/54069239/whats-the-best-practice-to-keep-all-the-constants-in-flutter
https://flutteragency.com/keep-all-the-constants-in-flutter/#:~:text=The%20preferred%20solution%20is%20to,new%20dart%20file%20named%20Constants.

Discussion (0)