Anak panah. Semua yang perlu Anda ketahui tentang konstanta


Konstanta bukan hanya versi finalvariabel aneh yang akan menghantui Anda dalam mimpi dengan semua kesalahan yang terkait dengannya. Compile-timekonstanta adalah cara yang baik untuk meningkatkan kinerja aplikasi Anda, tanpa membuat objek yang sama beberapa kali, dan dengan kata lain, "pre-create" objek pada waktu kompilasi.


const atau final?


, , . , , const final . .


void run() {
  const myConstNumber = 5;
  final myFinalNumber = 5;

  myConstNumber = 42; // 
  myFinalNumber = 42; // 
}

final, const , . , const .


class MyClass {
  final int myFinalField;
  const int myConstField; // 

  MyClass(this.myFinalField, this.myConstField);
}

, , final, const. , , (. ). ...



Dart . , "hello", , 3.14, , .


, .


void run() {
  const myList = [1, 2, 3];
  const myMap = {'one': 1};
  const mySet = {1, 2, 3};
}

: , if, spread , .


, const final , , . Dart , , . .



, , , . , .


void run() {
  final finalVariable = 123456;
  const constVariable = 123456;

  const notWorking = finalVariable; // 
  const working = constVariable;
}

, โ€“ , , , ...



Flutter const , , EdgeInsets, . - , .


const EdgeInsets.all(8), . , const , .

, const . : final .


class MyConstClass {
  final int field1;
  final List<String> field2;
  const MyConstClass(this.field1, this.field2);
}

void run() {
  //      
  const constVariable = 123456;
  const x = MyConstClass(constVariable, ['hello', 'there']);
}

, , const .


class MyWannabeConstClass {
  //  Future  const   
  final Future<int> field;
  // Dart  ,  ,  :
  const MyWannabeConstClass(this.field);
}

void run() {
  // Dart      const:
  const x = MyWannabeConstClass(Future.value(123)); // 
}

Dart , , , ""? , . const , . .


void run() {
  //  Future        
  final implicitNew = MyWannabeConstClass(Future.value(123));
  final explicitNew = new MyWannabeConstClass(Future.value(123));
}

const , , , Flutter .


, const final .


, new , const .


void run() {
  const implicitConst = MyConstClass(1);
  const explicitConst = const MyConstClass(1);
}

const , , , .


void run() {
  final regularVariable = const MyConstClass(1);
}

Kesimpulan


Semoga panduan ini telah mampu menjelaskan makna constkonstruktor dan, secara umum, konstanta di Dart. Cobalah untuk menggunakannya constjika memungkinkan, dan Anda akan membuat peningkatan kinerja kecil di aplikasi Anda baris demi baris. Dan Anda tahu bagaimana itu terjadi dengan perbaikan kecil - mereka memberikan hasil keseluruhan.


All Articles