Dart 2 ááẠááŒááºážáááºáá±á¬ static typing ááá¯á¡áá¯á¶ážááŒá¯áá¬ááœáẠáá°áááºáž Dart áá¬áá¬á
áá¬ážááŸáá·áº ááœá²ááŒá¬ážááẠ(á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠáá±á¬ááºáá»ááºáá»ááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº á¡áá»áá¯ážá¡á
á¬ážáááºááŸááºáá»ááºááẠá
áááºááŒáá¯ááºááœá±ážáá»ááºááá¯ááºáá±á¬áºáááºáž dynamic typing ááᯠá¡áá¯á¶ážáááŒá¯áá±á¬á·áá² áááŠážááœááºáá»ááºáá¬ážáá±á¬ á¡áá»áá¯ážá¡á
á¬ážááᯠvariable ááŸáá·áº áááºážáá»ááºáá±á¬á¡áá»áá¯ážá¡á
á¬ážá
á
áºáá±ážááŒááºážá¡ááœáẠáááºááŸááºáá¬ážááẠáá±á¬ááºááá¯ááºážááœáẠá¡áá¯á¶ážáá»áá²á·áááºá) áááºá¡ááºááá®áá±ážááŸááºážááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœááº
áá¯ááºáá±ááŸá¯á¡áá áºááœááº-
- áááºáá±á¬ááºážááá¯ááá¯áááºááŸá¬ Null áááºááá¯ážááᯠáá±ážáááºážá áœá¬ á¡áá¯á¶ážááŒá¯áááºá áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ááᯠáá»áá¯ážáá»ááºááŒááºážá á¥ááá¬á¡á¬ážááŒáá·áºá âintâ áá²á·ááá¯á· áááºááŸááºááá¬ážáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá áºáá¯á ááááºážááŸááºáá áºáá¯ááá¯á· áááºááá¯áž âNullâ ááᯠáááºááŸááºááẠááŒáá¯ážáááºážáá«á compile-time error ááẠááᯠáá áºááœáŸááºááá¯ááºáááºááŒá áºáááºá âint?â áá²á·ááá¯á·áá±á¬ Nullable ááŸáá·áº non-nullable á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŸáá·áº ááá¯ááºáááºáá®áá±á¬ ááá·áºáááºáá»ááºáá»á¬ážááá¯áááºáž ááá·áºááœááºážáá±á¬áºááŒáá²á·áááºá ááŸáá·áº "int" (á¡áá»áá¯ážá¡á á¬áž "int" áá«áá±á¬ ááááºážááŸááºááᯠá¡áá»áá¯ážá¡á á¬áž "int" ááŒáá·áº ááŒá±á¬ááºážáá²áááºááŸááºááá¯ááºáá±á¬áºáááºáž á¡ááŒááºá¡ááŸááºá¡á¬ážááŒáá·áº ááá¯ááºáá«)á "return" áá¯ááºááŒááºáá»ááºááœáẠááŒááºáá±ážáá¬ážáá±á¬ ááááºážááŸááºáá»á¬ážááŸáá·áº á¡áá°áá°áááºááŒá áºááẠ- á¡áááºá "Null" á¡ááŒá±á¡áá±á¡á¬áž ááœáá·áºáááŒá¯áá±á¬ á¡áá»áá¯ážá¡á á¬ážáá áºáá¯áá«ááŸááá±á¬ ááááºážááŸááºááẠáá¯ááºáá±á¬ááºáá»ááºáááá¯ááºáááºááœáẠáááºááá¯ážáá áºáá¯áááºááŸááºááá¬ážáá«áá compiler ááẠerror ááŒáááá·áºáááºá á€ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááẠááá·áºá¡á¬áž áááºááá¯ážáááºááŸááºááá¬ážáá² âNullâ áá¯áááºááŸááºáá¬ážáá±á¬ ááááºážááŸááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááŒáá¯ážáááºážááŒááºážááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬áá±á¬ áá»ááºá á®ážááŸá¯áá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážááá¯ááºá á±áááºááŒá áºáááºá
- ááá¯ááŸá±á¬ááºááŸá¯
pub.dev 10 packages á¡ááŸááºá¡áá¬ážááᯠáá»á±á¬áºááœá¬ážáá«ááŒá®á Dart 2.8 áá¶á·ááá¯ážáá±ážááá·áºá ááºáááºážááá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áº pub.dev ááŸáááºáá±á·áá»áºáá»á¬ážááŒááºáááºááá°ááŒááºážáá áœááºážáá±á¬ááºáááºááẠ"pub get" á¡áááá·áºááá¯áá¯ááºáá±á¬ááºáá±á¬á¡áá«á "pub get" á¡áááá·áºááá¯áá¯ááºáá±á¬ááºáá±á¬á¡áá«ááœáẠáááºáá±á·áá»áºáá»á¬ážááŒááºáááºááá°ááŒááºážá¡á¬áž ááŒáá¯ááºáá°ááœá²áá»á¬ážá¡ááŒá áºááá¯á·áá¶á·ááá¯ážáá±ážááŒááºážááŒáá·áº áááááá¬áá¬ááá¯ážáááºáá¬áá²á·áááºá pub run" á¡áááá·áºá Flutter-based ááá±á¬áá»ááºá¡áá áºá¡ááœáẠ"pub get" ááœááºáááºážááᯠá ááºážáááºááŒááºážááẠáááºáááºáá»áááºááᯠ6.5 á០2.5 á áá¹ááá·áºá០áá»á±á¬á·áááºážááœá¬ážáᬠFlutter Gallery áá²á·ááá¯á·áá±á¬ ááá¯ááŒá®ážáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠ15 á០3 á áá¹ááá·áºá០XNUMX á áá¹ááá·áºá¡ááááŒá áºáááºá - ááá·áºááœááºážáá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážáá±á«áºááœáẠááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡ááºááááºááŒá
áºáá±á
á±áááºá¡ááœáẠ"pub áá±ááºááá®áá±á¬á·áá±á¬" á¡áááá·áºá¡áá
áºááᯠáá±á«ááºážááá·áºáá²á·áááºá "pub outdated" ááœááºáááºážááᯠá¡áá¯á¶ážááŒá¯á áááºááŸááºáá¬ážááá·áº áááºáá±á·ááºá»áá
áºáá¯ááŸáá·áº áááºá
ááºáá±ááá·áº ááŸá®ááá¯ááŸá¯á¡á¬ážáá¯á¶ážá á¡ááááá¬ážááŸááºážá¡áá
áºáá»á¬ážááŸááááŸá pubspec ááá¯ááºááᯠá¡ááŒá±á¬ááºážá¡áá²áááŒá¯áá¯ááºáá² á¡áá²ááŒááºááá¯ááºáá«áááºá "pub upgrade" ááŸáá·áºááá°áá² command á¡áá
áºááẠpubspec ááŸáá·áºáááºááá¯ááºááá·áºáá¬ážááŸááºážáá»á¬ážááá¯áá¬áá áááºááœá²á¡áá
áºáá»á¬ážááá¯áááºáž á
á
áºáá±ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááá¯ážáá¬ážáá±á¬ ááŸá®ááá¯ááŸá¯áá»á¬ážáá«ááŸááá±á¬ áááºáá±á·áá»áºá¡ááœáẠ"foo: ^1.3.0" ááŸáá·áº "bar: ^2.0.0" ááᯠá¡áá¯á¶ážááŒá¯áá±ááá·áº "pub áá±ááºáá±á¬ááºáá»áá±ááŒá®" ááᯠá¡áá¯á¶ážááŒá¯áá±ááá·áº á¡ááá¯ááºážá¡áááºáá»á¬ážááŸáá·áº á¡áá
áºáá±á¬ áááºááœá²ááŸá
áºáá¯á
áá¯á¶ážá áá«áááºááŸá¯ááᯠááŒááá«áááº-
ááŸá®ááá¯ááŸá¯ áááºááŸá á¡ááá·áºááŒáŸáá·áºááá¯ááºáá±á¬ ááŒá±ááŸááºážááá¯ááºáá±á¬ áá±á¬ááºáá¯á¶ážááœááº
foo 1.3.0 1.3.1 1.3.1 1.3.1
áá¬áž 2.0.1 2.1.0 3.0.3 3.0.3
Dart áá¬áá¬á áá¬ážáá¡ááºá¹áá«áááºáá»á¬áž
- JavaScriptá C ááŸáá·áº Java áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠááá¬ááá»áá±á¬ áááºáá°áááœááºáá°áá±á¬ syntaxá
- áá±ááºáá®áááºááá±á¬ááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááŸáá·áº áááºáá±á¬ááºáááœááºáá°áá±á¬ áááááá¬áá»á¬ážá០á¡á áœááºážáááºáá¬áá¬áá»á¬ážá¡ááá áááºáá±á¬ááºáááœááºáá°áá±á¬ áááááá¬áá»á¬ážááŸááẠáá±ááºáá®áááºááá±á¬ááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááŸáá·áº áááºáááºážáá»ááºá¡áá»áá¯ážá¡á á¬ážá¡áá»áá¯ážáá»áá¯ážá¡ááœáẠáá»ááºááŒááºá áœá¬ ááœáŸáá·áºáááºááá¯ááºááŸá¯ááŸáá·áº á áœááºážáá±á¬ááºáááºááŒáá·áºáá¬ážááŸá¯ááᯠáá±áá»á¬á á±ááŒááºážá
- ááŸáááŒá®ážáá¬ážáááºážáááºážáá»á¬ážááŸáá·áº áá±áá¬áá»á¬ážááᯠáááºáááºáá»ááŒááºážááŸáá·áº ááŒááºáááºá¡áá¯á¶ážááŒá¯ááŒááºážááá¯á·ááᯠááœáá·áºááŒá¯ááá·áº á¡áááºážáá»á¬ážááŸáá·áº á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠáááºááŸááºááá¯ááºá áœááºážá
- á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠáááºááŸááºááŒááºážááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠá¡ááŸá¬ážááŸá¬áááºááŸáá·áº ááœá²ááŒá¬ážáááºááŸááºááẠááá¯ááá¯ááœááºáá°á á±ááŒá®ážá áá¯ááºááᯠááá¯ááá¯ááŸááºážáááºážá á±ááŒá®áž ááá¯ááá¯áááºááŸá¯ááá¯ááºá á±áᬠááŒááºááá¯áá¹ááá®áá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážá áááºážáááŒá¯ááŒááºááœááºážáá¶ááŸá¯ááŸáá·áº ááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááᯠááá¯ážááŸááºážá á±áááºá
- áá¶á·ááá¯ážáá±ážáá¬ážáá±á¬ á¡áá»áá¯ážá¡á
á¬ážáá»á¬áž áá«áááºáááº- á¡áá»áá¯ážáá»áá¯ážáá±á¬ hash á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá á¡áááºážá¡áá»ááºážáá»á¬ážááŸáá·áº á
á¬áááºážáá»á¬ážá áááºážá
á®áá»á¬ážá ááááºážáá»á¬ážááŸáá·áº á
á¬áááºážá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá áááºá
áœá²ááŸáá·áº á¡áá»áááºááᯠáá¯á¶ážááŒááºááẠá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá áá¯á¶ááŸááºáá±á¬áºááŒáá»ááºáá»á¬áž (RegExp)á ááŒá
áºááá¯ááºá
áá¬
ááá·áºááá¯ááºááá¯ááºáááºáá®ážáá«á á¡áá»áá¯ážá¡á á¬ážáá»á¬áž; - Parallel execution ááᯠá á¯á ááºážáááºá isolate attribute ááŒáá·áº classes áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠá¡ááá¯ááŒá¯áá¬ážááŒá®ážá áá®ážááŒá¬áž memory area ááŸá áá®ážááŒá¬ážáá±áá¬áá áºáá¯ááœáẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá¯ááºáá±á¬ááºááá·áº áá¯ááºááᯠáááºáá±á·áá»áºáá±ážááá¯á·ááŒááºážááŒáá·áº áááºááá¯ááºáááºážá ááºááŸáá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯ááŒááºážá
- ááŒá®ážáá¬ážáá±á¬ áááºááá±á¬áá»ááºáá»á¬ážá áá¶á·ááá¯ážááŸá¯ááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááᯠááá¯ážááŸááºážá á±áá±á¬ á á¬ááŒáá·áºááá¯ááºáá»á¬ážá¡áá¯á¶ážááŒá¯ááŸá¯á¡ááœáẠáá¶á·ááá¯ážááŸá¯á Third-party áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá»áŸáá±áá¬ážáá±á¬ áá áºáá»á áºááá¯ááºáá¯á¶á á¶ááœáẠááá·áºááœááºážááá¯ááºáááºá á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠá¡ááá¯ááºážáá»á¬ážááœá²á á¡á áááºá¡ááá¯ááºážáá áºáá¯á á®á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠáá®ážááŒá¬ážáááá¯ááááºáá¬á¡ááœá²á·áá áºááœá²á·áᶠá¡ááºááŸááºážááá¯ááºáááºá
- ááá¯ááºážááá áºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááá·áºáááááá¬áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá¡áá«á¡ááẠDart áá¬áá¬á áá¬ážááœáẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠáá¶á·ááá¯ážááẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬áááááá¬á¡á á¯á¶á¡ááẠ(âáááºážááŒááºááŒááºážááŸáá·áº áááºáá¯ááºáááºâ)á
- Dart áá¬áá¬á
áá¬ážááœáẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠááá¯ážááŸááºážá
á±áááºá áááºážááŸáá·áº áá«ááŸááááºá
SDK ááᯠá á¡áá¯ááºáááºáá±áá»á¬á¡áááºááá¯áẠááŒáááºáá¯ááºááœá²ááŒááºážá áááºááŒá¬áá°dart_analyzer á á¬ááŒáá·áºááá¯ááºáá»á¬áž á¡á á¯á¶ááá¯ááºá áá±á«ááºážá ááºááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž áááºáááºážáá»ááºDartPad ááŸáá·áº Dart-enabled plugins áá»á¬ážá¡ááœááºIntelliJ IDEAá WebStorm ,Emacs ,áá°áá±á¬áºáá±á¬ááºážááá¬áž 2 ОVim ; - á
á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáá·áº á¡áá¯á¶ážá¡áá±á¬ááºáá
á¹á
ááºážáá»á¬ážáá«ááŸááá±á¬ á¡ááá¯áááºáá±á·ááºá»áá»á¬ážááᯠááá¯ááŸá±á¬ááºáá¯á¶ááŸáááá·áº ááŒáá·áºáá±áá«áááºá
á¡áááºááá¯áẠá¡áá¯ááºáá±á«ááºáž 10 áá»á±á¬áºááŸááá«áááºá
source: opennet.ru