рдбрд╛рд░реНрдЯред рдЖрдкрдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ


рд▓рдЧрд╛рддрд╛рд░ рдХреЗрд╡рд▓ finalрдЪрд░ рдХрд╛ рдПрдХ рдЕрдЬреАрдм рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдкрдиреЗ рдореЗрдВ рдЙрдирд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░реЗрдЧрд╛ред Compile-timeрд╕реНрдерд┐рд░рд╛рдВрдХ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЛ рдХрдИ рдмрд╛рд░ рдмрдирд╛рдП рдмрд┐рдирд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ "рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд╛рдг" рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдПред


const рдпрд╛ рдЕрдВрддрд┐рдо?


, , . , , 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);
}

рдирд┐рд╖реНрдХрд░реНрд╖


рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ constрдбрд╛рд░реНрдЯ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЕрд░реНрде рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ ред constрдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ , рдФрд░ рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЫреЛрдЯреЗ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ - рд╡реЗ рдПрдХ рд╕рдордЧреНрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВред


All Articles