±à¼ÍƼö: |
ÎÄÕ½éÉÜÁËÒ»ÖÖ¿ªÔ´µÄͨÓñà³ÌÓïÑÔDart£¬ÏêϸµÄ½éÉÜÁËDart
¿ª·¢»·¾³µÄ»ù´¡Óï·¨£¬Ï£ÍûÄܶÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚsegmentfault£¬ÓÉ»ðÁú¹ûÈí¼þLuca±à¼¡¢ÍƼö¡£ |
|
Flutter ·¢Õ¹ÀúÊ·
FlutterÊÇGoogle¿ª·¢µÄÒ»¿îÓÃÓÚ°ïÖú¿ª·¢ÕßÔÚiOSºÍAndroidÁ½¸öƽ̨¹¹½¨¸ßÖÊÁ¿ÔÉúÓ¦ÓõÄÈ«ÐÂÒÆ¶¯UI¿ò¼Ü¡£Ëµµ½Flutter£¬ºÜ¶àͬѧ¿ÉÄܻὫËüºÍÏÂÃæµÄ¼¸¸ö´Ê¹ØÁªÆðÀ´£ºÐÂÐ˵ġ¢Òƶ¯¶Ë¡¢¶¯Ì¬»¯¡¢¿çƽ̨¡¢¿ª·¢¿ò¼Ü¡£
¼òµ¥À´Ëµ£¬FlutterÊÇÒ»¿îÒÆ¶¯Ó¦ÓóÌÐòSDK£¬°üº¬¿ò¼Ü¡¢widgetºÍ¹¤¾ß£¬Îª¿ª·¢ÈËÔ±ÌṩÁËÒ»ÖÖÔÚAndroidºÍiOSÉϹ¹½¨ºÍ²¿Êð¾«ÃÀÒÆ¶¯Ó¦ÓóÌÐòµÄ¼òµ¥¸ßЧµÄ·½Ê½¡£
FlutterÏîÄ¿ÓÉÀ´ÒѾ㬵«ÕæÕýΪÈËËùÊì֪ȷÊÇÔÚ2017Äê5ÔÂGoogle I/O´ó»áÉÏ£¬ÏÂÃæ¾ÍÈÃÎÒÃÇÀ´¿´Ò»ÏÂFlutterÏîÄ¿µÄ·¢Õ¹Àú³Ì£º
2014.10£º FlutterµÄǰÉíSkyÔÚGitHubÉÏ¿ªÔ´¡£
2015.10£º ¾¹ýÒ»ÄêµÄ¿ªÔ´£¬SkyÕýʽ¸ÄÃûΪFlutter£¬µÍµ÷ÆÚ¡£
2017.5£º Google I/OÕýʽÏòÍâ½ç¹«²¼ÁËFlutter£¬Õâ¸öʱºòFlutter²ÅÕýʽ½øÈ¥´ó¼ÒµÄÊÓÒ°¡£
2018.6£º ¾à5ÔÂGoogle I/O 1¸öÔµÄʱ¼ä£¬Flutter1.0Ô¤ÀÀ°æ¡£
2018.12£ºFlutter1.0·¢²¼£¬ËüµÄ·¢²¼½«´ó¼Ò¶ÔFlutterµÄѧϰºÍÑо¿ÍƵ½ÁËÒ»¸öÐÂµÄÆðµã¡£
2019.2£ºFlutter1.2·¢²¼Ö÷ÒªÔö¼Ó¶ÔwebµÄÖ§³Ö¡£
2019.5 £ºFlutter 1.5 ·¢²¼£¬´Ë°æ±¾Flutter ·¢²¼ÁËWeb°æ±¾£¬ Õýʽ¿ªÆôÁË
Flutter µÄȫƽ̨ UI ¿ò¼Ü֮·¡£
2019.7 £ºFlutter 1.7 ·¢²¼£¬ÐÂÔö¶ÔAndroidX¡¢Android App Bundles
ºÍ 64 λµÄ Android Ó¦ÓõÄÖ§³Ö£¬¼ÓÈëһЩÐµĹ¦ÄܺÍWidgetÒÔ¼°½â¾öһЩ¿ª·¢ÕßÌá³öµÄÎÊÌâ¡£
Ëæ×ÅFlutterÖð½¥×ßÏò³ÉÊ죬Æä¿ª·¢Éú̬ȦҲÔÚ²»¶ÏµÄ·¢Õ¹£¬Ñ§Ï°Flutter³ÉΪǰ¶Ë¿ª·¢Õß²»¿ÉȱÉٵİøÉí¼¼ÄÜ¡£
DartÓïÑÔ»ù´¡
¼ò½é
DartÊÇÓÉGoogle¿ª·¢µÄÒ»ÃÅȫеļÆËã»ú±à³ÌÓïÑÔ£¬ºóÀ´±»ECMAÅú׼Ϊ±ê×¼µÄ¼ÆËã»ú±à³ÌÓïÑÔ£¬ÊÊÓÃÓÚ·þÎñÆ÷¡¢ä¯ÀÀÆ÷¡¢Òƶ¯Ó¦ÓúÍÎïÁªÍøµÈÁìÓòµÄ¿ª·¢¡£
Dart SDKÓɹȸèÍÆ³ö£¬¸½´øÆä±àÒëÆ÷ - Dart VM¡£ SDK»¹°üÀ¨Ò»¸öʵÓóÌÐò - dart2js£¬Ò»¸öÉú³ÉÓëDart½Å±¾µÈЧµÄJavaScriptµÄת»»³ÌÐò¡£
×ÜÌåÀ´Ëµ£¬DartÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬¾ßÓÐCÓïÑÔ·ç¸ñµÄÓï·¨£¬¿ÉÒÔÑ¡Ôñ½«Ëü±àÒë³ÉJavaScript¡£ËüÖ§³Ö¸÷ÖÖ±à³Ì¸¨Öú¹¤¾ß£¬È磺½Ó¿Ú£¬À࣬¼¯ºÏ£¬·ºÐͺͿÉÑ¡ÀàÐÍ¡£
Dart¿ÉÒԹ㷺ÓÃÓÚ´´½¨µ¥Ò³ÃæÓ¦ÓóÌÐò¡£µ¥Ò³Ó¦ÓóÌÐò½öÊÊÓÃÓÚÍøÕ¾ºÍWebÓ¦ÓóÌÐò¡£µ¥Ò³Ó¦ÓóÌÐò¿ÉÒÔÔÚÍøÕ¾µÄ²»Í¬ÆÁĻ֮¼ä½øÐе¼º½£¬¶øÎÞÐèÔÚä¯ÀÀÆ÷ÖмÓÔØ²»Í¬µÄÍøÒ³¡£
ÏÂÃæÊÇDartÓëJavaScriptµÄһЩ¼òµ¥Çø±ð£º

ps£º¹È¸è·¢²¼ÁËÒ»¸öÌØÊâµÄChromium°æ±¾ - Dart VM ¡£Ê¹ÓÃDartium¿ÉÒÔÔÚä¯ÀÀÆ÷ÉϽøÐвâÊÔ֮ǰ£¬²»±Ø½«´úÂë±àÒëΪJavaScript¡£
Dart ¿ª·¢»·¾³
Ö´ÐÐDart ´úÂ룬¿ÉÒÔʹÓÃÁ½ÖÖ·½Ê½£¬±¾µØ±à¼Æ÷»·¾³ºÍÔÚÏßÔËÐл·¾³¡£
ÔÚÏßÔËÐл·¾³
¿ÉÒÔʹÓà https://dartpad.dartlang.org/ ÔÚÏß±à¼Æ÷ÔÚÏßÔËÐдúÂ룬ÈçÏÂͼËùʾ£º

±¾µØ±à¼Æ÷
ÔÚ±¾µØÔËÐÐDart´úÂëÐèÒªÏȰ²×°Dart Sdk£¬¿ÉÒÔ´ÓÒÔϵØÖ·½øÐÐÏÂÔØ£º
https://dart.dev/tools/sdk/ar...
http://www.gekorm.com/dart-wi...
Íê³ÉSDK°²×°ºó£¬½«Dart¿ÉÖ´ÐÐÎļþÌí¼Ó»·¾³±äÁ¿£¬ÈçÏÂËùʾ£º
Èç¹ûÒªÑéÖ¤ÊÇ·ñ³É¹¦°²×°Dart£¬¿ÉÒÔ´ò¿ªÃüÁîÌáʾ·û²¢ÊäÈëÒÔÏÂÃüÁî £º
Èç¹ûÊä³öÏàÓ¦µÄÐÅÏ¢£¬¼´ËµÃ÷°²×°³É¹¦£¡
IDE
Ŀǰ£¬Ö§³ÖDartµÄIDEÖ÷ÒªÓÐEclipse¡¢VSCode¡¢IntelliJ¡¢Android StudioºÍWebStorm¡£Ê¹ÓÃIDE¿ª·¢DartÓ¦ÓóÌÐòʱ£¬Ö»ÐèÒª°²×°Dart²å¼þ¼´¿É¡£ÀýÈ磬ÏÂÃæÊÇAndroid
Studio°²×°Dart²å¼þ£º

dart2js¹¤¾ß
art2js¹¤¾ßÓÃÓÚ½«Dart´úÂë±àÒëΪJavaScript¡£½«Dart´úÂë±àÒëΪJS¿ÉÒÔÔÚ²»Ö§³ÖDart
VMµÄä¯ÀÀÆ÷ÉÏÔËÐÐDart½Å±¾¡£
dart2js¹¤¾ß×÷ΪDart SDKµÄÒ»²¿·ÖÌṩ£¬¿ÉÒÔÔÚ/dartsdk/binÎļþ¼ÐÖÐÕÒµ½¡£Òª½«Dart±àÒëΪJavaScript£¬¿ÉÒÔÔÚÖÕ¶ËÖмüÈëÒÔÏÂÃüÁ
dart2js - -
out = <output_file>.js <dart_script>.dart |
ÔËÐдËÃüÁîºó»ÔÉú³ÉÒ»¸öÎļþ£¬¼´ÓëDart´úÂëµÈЧµÄJavaScript¡£
µÚÒ»¸öDart³ÌÐò
ѧϰһÃÅеÄÓïÑÔ£¬¶¼»áÀ´Ò»¸ö¡°Hello World!¡±£¬Ñ§Ï°Dart
֮ǰ£¬ÎÒÃÇÒ²À´Ò»¸ö¡°Hello World!¡±¡£
main() {
print("Hello World!");
} |
ÆäÖУ¬main()º¯ÊýÊÇDartÖеÄÔ¤¶¨Òå·½·¨£¬´Ë·½·¨³äµ±Ó¦ÓóÌÐòµÄÈë¿Úµã¡£Ö´ÐÐÉÏÃæµÄ´úÂ룬Êä³ö½á¹ûÈçÏ£º
˵Ã÷£¬JavaScriptûÓÐÔ¤¶¨ÒåµÄÈë¿Úº¯Êý£¬µ«ÔÚDart³ÌÐòÖУ¬Ã¿¸öapp¶¼±ØÐëÓÐÒ»¸ö¶¥¼¶µÄmain()º¯Êý×÷ΪӦÓóÌÐòµÄÈë¿Úµã¡£
Dart»ù´¡Óï·¨
´úÂë×¢ÊÍ
×¢ÊÍÊÇÌá¸ß³ÌÐò¿É¶ÁÐÔµÄÒ»ÖÖÓÐЧ·½·¨£¬×¢ÊÍͨ³£°üº¬´úÂëµÄ×÷Õß¡¢º¯Êý/¹¹ÔìÌáʾµÈÐÅÏ¢¡£±àÒëÆ÷ÔÚ±àÒë³ÌÐòʱ»áºöÂÔ×¢ÊÍ¡£Ä¿Ç°£¬DartÖ§³ÖÒÔÏÂÀàÐ͵Ä×¢ÊÍ£º
// µ¥ÐÐ×¢ÊÍ
/*
* ¶àÐÐ×¢ÊÍ
*/
/**
* Îĵµ×¢ÊÍ
*/
/// ʹÓÃÈý¸öб¸Ü¿ªÍ·
/// ÕâÊÇDartÌØÓеÄÎĵµ×¢ÊÍ |
Dart¹Ø¼ü×Ö
¹Ø¼ü×ÖÔÚÓïÑÔµÄÉÏÏÂÎÄÖоßÓÐÌØÊ⺬Ò壬ϱíÊÇDartÓïÑÔÖеÄһЩ¹Ø¼ü×Ö£º

˵Ã÷£¬ºÍJavaµÈÃæÏò¶ÔÏóÓïÑÔÒ»Ñù£¬ÈçÏÂһЩ¹æÔò¶ÔDartÒ²ÊÊÓãº
¿Õ°×ºÍ»»ÐÐ
DartºöÂÔ³ÌÐòÖгöÏֵĿոñ£¬ÖƱí·ûºÍ»»Ðзû¡£¿ÉÒÔÔÚ³ÌÐòÖÐ×ÔÓÉʹÓÿոñ£¬ÖƱí·ûºÍ»»Ðзû£¬²¢ÇÒ¿ÉÒÔ×ÔÓɵØÒÔ¼ò½àÒ»Öµķ½Ê½¸ñʽ»¯ºÍËõ½ø³ÌÐò£¬Ê¹´úÂëÒ×ÓÚÔĶÁºÍÀí½â¡£
´óÐ¡Ð´Çø·Ö
DartÇø·Ö´óСд£¬DartÖдóдºÍСд×Ö·û±íʾ²»Í¬µØº¬Òå¡£
ÉùÃ÷ÒԷֺŽáβ
ÿÐÐÖ¸Áî¶¼³ÆÎªÓï¾ä¡£Ã¿¸ödartÓï¾ä±ØÐëÒÔ·ÖºÅ(;)½áβ¡£Ò»ÐпÉÒÔ°üº¬¶à¸öÓï¾ä¡£µ«ÊÇ£¬ÕâЩÓï¾ä±ØÐëÓ÷ֺŷָô¡£
ÀàÓë¶ÔÏó
DartÊÇÒ»ÖÖÃæÏò¶ÔÏóµÄÓïÑÔ£¬ÃæÏò¶ÔÏóÊÇÒ»ÖÖ×ñÑÕæÊµÊÀ½ç½¨Ä£µÄÈí¼þ¿ª·¢·¶Àý¡£ÔÚÃæÏò¶ÔÏóµÄ±à³ÌÊÀ½çÀ
¶ÔÏó¿ÉÒÔÈÏΪÊÇÈκÎʵÌåµÄʵʱ±íʾ£¬¾ßÓÐÈçϼ¸¸öÌØÕ÷£º
״̬£ºÓɶÔÏóµÄÊôÐÔÃèÊö¡£
ÐÐΪ£ºÃèÊö¶ÔÏóµÄÐÐΪ·½Ê½¡£
±êʶ£º½«¶ÔÏóÓëÒ»×éÀàËÆ´ËÀà¶ÔÏóÇø·Ö¿ªµÄΨһֵ¡£
¶øÀàÔòÊÇ´´½¨¶ÔÏóµÄÀ¶Í¼/Ä£°å£¬Àà¿ÉÒÔ·â×°¶ÔÏóµÄÊý¾Ý¡£
class TestClass
{
void display() {
print("Dart and Object Orientation");
}
}
void main() {
TestClass c = new TestClass();
c.display();
} |
ÄÚÖÃÊý¾ÝÀàÐÍ
DartÖ§³ÖµÄÄÚÖÃÊý¾ÝÀàÐÍÖ÷ÒªÓÐÒÔϼ¸ÖÖ£º
numbers Êý×Ö
strings ×Ö·û´®
booleans ²¼¶û
lists(Ò²±»³ÆÖ®Îªarrays)listºÍÊý×é
sets set¼¯ºÏ
maps map¼¯ºÏ
runes(ÓÃÓÚÔÚ×Ö·û´®ÖбíʾUnicode×Ö·û´®)
symbols ·ûºÅ
ÆäÖУ¬Ã»Óгõʼ»¯µÄ±äÁ¿Ä¬ÈÏֵΪ null¡£ÊýÖµÀàÐͱäÁ¿µÄĬÈÏÖµÒ²ÊÇ null¡£ÊýÖµÀàÐÍnumÓÐÁ½¸ö¾ßÌå×ÓÀ࣬·Ö±ðΪintºÍdouble£¬ÆäÖÐintΪÕûÊýÖµ£¬·¶Î§ÊÇ-2^53
-2^53Ö®¼ä£»doubleÔòÊÇ64λµÄË«¾«¶È¸¡µãÊý¡£
±äÁ¿Óë³£Á¿
±äÁ¿
DartÖж¨Òå±äÁ¿ÓÐÁ½ÖÖ·½Ê½£¬Ò»ÖÖÊǾ²Ì¬ÀàÐÍÓïÑÔ³£Óõķ½Ê½£¬¼´ÏÔʽָ¶¨±äÁ¿µÄÀàÐÍ£»ÁíÒ»ÖÖÔòÊǶ¯Ì¬ÓïÑԵij£Ó÷½Ê½£¬²»Ö¸¶¨ÀàÐÍ£¬ÓÉvm×Ô¶¯Íƶϡ£ÀýÈ磺
// 1.ͨ¹ýÏÔʽָ¶¨ÀàÐÍÀ´¶¨Òå±äÁ¿
String name = "ÕÅÈý";
num age = 18;
// 2.ʹÓùؼü×Övar£¬²»Ö¸¶¨ÀàÐÍ
var address = "ÉîÄÏ´óµÀ";
var id = 100; |
ÐèҪ˵Ã÷µÄÊÇ£¬Ê¹ÓÃvar¶¨Òå±äÁ¿Ê±£¬¼´Ê¹Î´ÏÔʽָ¶¨ÀàÐÍ£¬Ò»µ©¸³ÖµºóÀàÐ;ͱ»¹Ì¶¨£¬Èç¹ûÔٸıä±äÁ¿µÄÀàÐÍ£¬Ôò»á±¨´í£º
var number =
19;
// ÒÔÏ´úÂë´íÎó£¬ÎÞ·¨ÔËÐУ¬number±äÁ¿ÒÑÈ·¶¨ÎªintÀàÐÍ
number = "2019"; |
¶ÔÓÚÉÏÃæµÄÇé¿ö£¬¿ÉÒÔʹÓö¯Ì¬¸Ä±ä±äÁ¿µÄÊý¾ÝÀàÐÍ£¬¼´Ê¹ÓÃdynamic»òObjectÀ´¶¨Òå±äÁ¿¡£
// dynamicÉùÃ÷±äÁ¿
dynamic var1 = "hello";
var1 = 19;
print(var1); // 19
// ObjectÉùÃ÷±äÁ¿
Object var2 = 20;
var2 = "Alice";
print(var2); // Alice |
³£Á¿
DartÖ§³ÖµÄ³£Á¿¶¨Ò巽ʽҲÓÐÁ½ÖÖ£¬Ò»ÖÖÊÇʹÓÃfinal¹Ø¼ü×Ö£¬Í¬JavaÖеÄÓ÷¨£¬
Ò»¸ö final ±äÁ¿Ö»Äܸ³ÖµÒ»´Î£»ÁíÒ»ÖÖÊÇDartµÄ·½Ê½£¬Ê¹ÓÃconst¹Ø¼ü×Ö¶¨Ò壬ҲÊÇJavaScript²ÉÓõķ½Ê½¡£
// ʹÓÃfinal¹Ø¼ü×Ö¶¨Òå³£Á¿
final height = 10;
// ʹÓÃconst¹Ø¼ü×Ö¶¨Òå³£Á¿
const pi = 3.14; |
ÐèҪ˵Ã÷µÄÊÇ£¬final¶¨ÒåµÄ³£Á¿ÊÇÔËÐÐʱ³£Á¿£¬¶øconst³£Á¿ÔòÊDZàÒëʱ³£Á¿£¬Ò²¾ÍÊÇ˵final¶¨Òå³£Á¿Ê±£¬ÆäÖµ¿ÉÒÔÊÇÒ»¸ö±äÁ¿£¬¶øconst¶¨ÒåµÄ³£Á¿£¬ÆäÖµ±ØÐëÊÇÒ»¸ö×ÖÃæ³£Á¿Öµ¡£
final time =
new DateTime.now(); // ÕýÈ·
const time = new DateTime.now(); // ´íÎó
const list = const[1,2,3]; // ÕýÈ·
const list = [1,2,3]; // ´íÎó |
Dart»ù±¾ÀàÐͲÙ×÷
DartÖ§³ÖµÄ»ù±¾Êý¾ÝÀàÐÍÖ÷ÒªÓÐÒÔϼ¸ÖÖ£º
Êý×Ö
×Ö·û´®
²¼¶û
Áбí(ÀàËÆÓÚÊý×é)
¼¯ºÏ
Ó³Éä·ûÎÄ(ÓÃÓÚ±íʾ×Ö·û´®ÖеÄUnicode×Ö·û)
·ûºÅ
Êý×Ö
DartÖеÄÊý×ÖÀàÐÍÓÐÁ½ÖÖÀàÐÍ£ºÕûÊýºÍË«¾«¶ÈÀàÐÍ¡£
ÕûÊý£ºÕûÊýÖµ±íʾ·ÇСÊýÖµ£¬¼´Ã»ÓÐСÊýµãµÄÊýÖµ¡£ÀýÈ磬10ÊÇÕûÊý¡£
Ë«¾«¶ÈÊý£ºDart»¹Ö§³ÖСÊýÊýÖµ£¬¼´´øÐ¡ÊýµãµÄÖµ£¬DartÖеÄDoubleÊý¾ÝÀàÐͱíʾ64λ(Ë«¾«¶È)¸¡µãÊý¡£ÀýÈ磬10.10¡£
//ÕûÊý
var x = 123;
var hex = 0xDEADBEEF;
//Ë«¾«¶ÈÊý
var y = 1.199;
var exponents = 1.42e5; |
´ÓDart 2.1¿ªÊ¼£¬±ØÒªÊ±ÕûÊý»á×Ô¶¯×ª»»ÎªË«¾«¶ÈÊý£¬ÀýÈ磺
double z = 10;
// Ï൱ÓÚ double z = 10.0. |
³ý´ËÖ®Í⣬×Ö·û´®Ò²¿ÉÒÔת»»ÎªÊý×Ö£¬ÀýÈ磺
// String תΪ
int
var one = int.parse('1');
assert(one == 1);
// String תΪ double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int תΪ String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double תΪ String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
|
×Ö·û´®
×Ö·û´®´ú±íһϵÁÐ×Ö·û¡£ÀýÈ磬Èç¹ûÒª´æ´¢Ò»Ð©Êý¾Ý£¬ÈçÃû³Æ£¬µØÖ·µÈ£¬ÔòӦʹÓÃ×Ö·û´®Êý¾ÝÀàÐÍ¡£Dart×Ö·û´®ÊÇһϵÁÐUTF-16´úÂëµ¥Ôª¡£·ûÎÄÓÃÓÚ±íʾUTF-32´úÂëµ¥ÔªÐòÁС£
DartʹÓùؼü×ÖStringÀ´±íʾ×Ö·û´®ÎÄ×Ö£¬×Ö·û´®µÄÖµÖ§³Öµ¥ÒýºÅ»òË«ÒýºÅ·½Ê½¡£
var s1 = 'Single
quotes work well for string literals.';
var s2 = "Double quotes work just as well."; |
ͬÊ£¬¿ÉÒÔʹÓÃ${expression}½«±í´ïʽµÄÖµ·ÅÔÚ×Ö·û´®ÖС£Èç¹û±í´ïʽÊDZêʶ·û£¬Ôò¿ÉÒÔÌø¹ý{}¡£
var name = "ÍõÎå";
var aStr = "hello,${name}";
print(aStr); |
Dart»¹Ö§³ÖʹÓÃ"+"²Ù×÷·ûÆ´½Ó×Ö·û´®¡£
var greet =
"hello" + " world"; |
ʹÓôøÓе¥ÒýºÅ»òË«ÒýºÅµÄÈýÒýºÅ´´½¨¶àÐÐ×Ö·û´®¡£
var s1 = '''
You can create
multi-line strings like this one.
'''; |
²¼¶ûÀàÐÍ
ºÍJavaÓïÑÔÖеÄbooleanÀàÐÍÀàËÆ£¬DartÖеIJ¼¶ûÀàÐͽöÓÐfalse¡¢trueÁ½¸öÖµ£¬²»ÄÜʹÓÃ0¡¢·Ç0»òÕßnull¡¢·ÇnullÀ´±í´ïfalseºÍtrue¡£
bool flags;
print(flags); // null |
Áбí
ÔÚDartÖУ¬Êý×éÊÇÒ»¸öList¶ÔÏ󣬴ó¶àÊýÈËÒ²½«Ëü³ÆÎªÁÐ±í¡£DartÖÐÁбí²Ù×÷ÓëJavaScriptÖеÄÊý×éÏàËÆ¡£
ÁбíʹÓôÓ0¿ªÊ¼µÄË÷Òý£¬ÆäÖÐ0ÊǵÚÒ»¸öÔªËØµÄË÷Òý£¬list.length-1ÊÇ×îºóÒ»¸öÔªËØµÄË÷Òý¡£¿ÉÒÔ»ñµÃÁбíµÄ³¤¶È²¢ÏñÔÚJavaScriptÖÐÒ»ÑùÒýÓÃÁбíÔªËØ£¬ÀýÈ磺
var list = [1,
2, 3];
assert(list.length == 3);
assert(list[1] == 2);
list[1] = 1;
assert(list[1] == 1); |
Òª´´½¨Ò»¸ö±àÒëʱ³£Á¿µÄÁÐ±í£¬¿ÉÒÔÔÚÁбíÎÄ×Ö֮ǰÌí¼Óconst¹Ø¼ü×Ö£¬ÀýÈ磺
var constantList
= const [1, 2, 3]; |
ͬÊ£¬Dart ÔÚ2.3°æ±¾ÒýÈëÁËÀ©Õ¹ÔËËã·û(...)ºÍ¿ÕÖµ¸ÐÖªÀ©Õ¹ÔËËã·û(...?)£¬ËüÌṩÁËÒ»ÖÖ½«¶à¸öÔªËØ²åÈ뼯ºÏµÄ¼ò½à·½·¨¡£ÀýÈ磬ʹÓÃÀ©Õ¹ÔËËã·û(...)½«ÁбíµÄËùÓÐÔªËØ²åÈëÁíÒ»¸öÁÐ±í£º
var list = [1,
2, 3];
var list2 = [0, ...list];
assert(list2.length == 4); |
Èç¹ûÀ©Õ¹ÔËËã·ûÓÒ²àµÄ±í´ïʽ¿ÉÄÜΪnull£¬Ôò¿ÉÒÔͨ¹ýʹÓÃÖ§³ÖnullµÄÀ©Õ¹ÔËËã·û(...?)À´±ÜÃâÒì³££º
var list;
var list2 = [0, ...?list];
assert(list2.length == 1); |
¼¯ºÏ
DartÖеÄSetÊÇÎÞÐòµÄΨһÏîµÄ¼¯ºÏ£¬DartÖ§³ÖÓÉSetÎÄ×ÖºÍSetÀàÐÍÌṩµÄ¼¯ºÏ¡£ÀýÈ磬ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄDart¼¯ºÏ£º
var test = {'yiibai.com',
'chlorine', 'bromine', 'iodine', 'astatine'}; |
¼¯ºÏÖ§³ÖʹÓÃadd()»òaddAll()·½·¨£¬ÀýÈ磺
var elements
= <String>{};
elements.add('hello');
elements.addAll(test); |
ͬÑù£¬Òª´´½¨Ò»¸ö±àÒëʱ³£Á¿µÄ¼¯ºÏ£¬ÇëÔÚsetÎÄ×Ö֮ǰÌí¼Óconst¹Ø¼ü×Ö£º
final constantSet
= const {
'fluorine',
'chlorine',
'bromine',
'iodine',
'astatine',
}; |
Ó³Éä
Ó³É䣬ÓÖ³ÆÎª¹ØÁªÊý×飬Ï൱ÓÚJavaÖеÄHashMap¡£Ó³ÉäÓɹØÁª¼üºÍÖµ¹¹³É£¬¼üºÍÖµ¶¼¿ÉÒÔÊÇÈκÎÀàÐ͵ĶÔÏó¡£Ã¿¸ö¼üÖ»³öÏÖÒ»´Î£¬µ«¿ÉÒÔ¶à´ÎʹÓÃÏàͬµÄÖµ¡£
var gifts =
{
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
var nobleGases = {
2: 'helium',
10: 'neon',
18: 'argon',
}; |
µ±È»£¬Dart»¹¿ÉÒÔʹÓÃMap¹¹Ô캯Êý´´½¨ÏàͬµÄ¶ÔÏó¡£
var gifts =
Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
var nobleGases = Map();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon'; |
Òª´´½¨Ò»¸ö±àÒëʱ³£Á¿µÄÓ³É䣬¿ÉÒÔÔÚmapÎÄ×Ö֮ǰÌí¼Óconst¹Ø¼ü×Ö£¬ÀýÈ磺
final constantMap
= const {
2: 'helium',
10: 'neon',
18: 'argon',
}; |
·ûÎÄ
ÔÚDartÖУ¬·ûÎÄʹÓõÄÊÇ×Ö·û´®µÄUTF-32´úÂëµã¡£UnicodeΪÊÀ½çÉÏËùÓÐÊéдϵͳÖÐʹÓõÄÿ¸ö×Öĸ£¬Êý×ֺͷûºÅ¶¨ÒåΨһµÄÊýÖµ¡£ÓÉÓÚDart×Ö·û´®ÊÇUTF-16´úÂëµ¥ÔªµÄÐòÁУ¬Òò´ËÔÚ×Ö·û´®Öбíʾ32λUnicodeÖµÐèҪʹÓÃÌØÊâÓï·¨¡£
ÔÚDartÖУ¬StringÀàÓм¸¸öÊôÐÔ¿ÉÓÃÓÚÌáÈ¡·ûÎÄÐÅÏ¢¡£codeUnitAtºÍcodeUnitÊôÐÔ·µ»Ø16λ´úÂëµ¥Ôª¡£
·ûºÅ
Symbol¶ÔÏó±íʾDart³ÌÐòÖÐÉùÃ÷µÄÔËËã·û»ò±êʶ·û¡£¿ÉÄÜÓÀÔ¶²»ÐèҪʹÓ÷ûºÅ£¬µ«ËüÃǶÔÓÚ°´Ãû³ÆÒýÓñêʶ·ûµÄAPI·Ç³£ÓÐÓã¬ÒòΪËõС»á¸ü¸Ä±êʶ·ûÃû³Æ¶ø²»»á¸ü¸Ä±êʶ·û·ûºÅ¡£
Òª»ñÈ¡±êʶ·ûµÄ·ûºÅ£¬ÇëʹÓ÷ûºÅÎÄ×Ö£¬ÀýÈ磺
º¯Êý
º¯ÊýÊÇÒ»×éÓÃÓÚÖ´ÐÐÌØ¶¨ÈÎÎñµÄ´úÂë¿é£¬ÎÒÃÇ¿ÉÒÔ½«³ÌÐò¿´³ÉÊǶà¸öº¯Êý°´ÕÕijÖÖÂß¼×齨µÄ´úÂë¿é¡£
ÔÚDartÖУ¬º¯Êý£¨»ò·½·¨£©Ò²ÊÇÒ»¸ö¶ÔÏó£¬ËüµÄÀàÐÍÊÇ Function¡£ ÕâÒâζ×Å£¬º¯Êý¿ÉÒÔ¸³Öµ¸ø±äÁ¿£¬Ò²¿ÉÒÔµ±×öÆäËûº¯ÊýµÄ²ÎÊý¡£
»ù±¾¶¨Òå
ÔÚDartÖж¨Ò庯Êý£¬»ù±¾ÉÏÓëJavaÀàËÆ£¬ÀýÈ磺
/ ¶¨ÒåÒ»¸ö²»´ø·µ»ØÖµµÄº¯Êý£¬¿ÉÒÔ´øvoid,
Ò²¿ÉÒÔ²»´ø
void say(var word){
print("I say '${word}'";
}
// ²ÎÊý¿ÉÒÔ²»ÓÃÖ¸¶¨ÀàÐÍ£¬Èç¹û²»Ö¸¶¨£¬ÔòĬÈÏÊÇvar
bool isInt(numVar){
return numVar is int;
}
// Èç¹ûº¯ÊýÖ»ÓÐÒ»¸öreturn Óï¾ä¿ÉÒÔÓà => ¼òд
// ÐèҪעÒâ => ºóÃæÖ»ÄÜÊÇÒ»¸ö±í´ïʽ»òÕßÊǵ¥ÌõÓï¾ä¡£
bool isInt2(numVar) => numVar is int;
main(){
say('hello world'); // I say 'hello world'
print(isInt('a')); // false
print(isInt(1)); // true
} |
²ÎÊý
DartÖ§³ÖÃüÃû¿ÉÑ¡²ÎÊýºÍλÖÿÉÑ¡²ÎÊý¡£ÆäÖУ¬ÃüÃû¿ÉÑ¡²ÎÊýʹÓõÄÊÇ{}, λÖÿÉÑ¡²ÎÊýʹÓõÄÊÇ[]¡£Çø±ð¾ÍÊÇ,
Èç¹ûÓÃ{}ÉùÃ÷£¬ÔÚʹÓÃʱ±ØÐë´ø×ŲÎÊýÃû£¬È磺a:123£»Èç¹ûÓÃ[]ÉùÃ÷£¬ÔÚʹÓÃʱÐèÒª°´ÕÕ˳ÐòʹÓá£
ÃüÁî¿ÉÑ¡²ÎÊý
// ¶¨ÒåÒ»¸öº¯Êý£¬²ÎÊýÁбíÓû¨À¨ºÅ°ü¹ü
enableFlags({bool bold, bool hidden}) {
// do something
}
// µ÷Ó÷½Ê½£¬´«²ÎʱʹÓÃ"²ÎÊýÃû:Öµ"µÄÐÎʽ
enableFlags(hidden:true,bold:false); |
λÖÿÉÑ¡²ÎÊý
// ¶¨Òåaddº¯Êý
add(int x, [int y, int z]){
int result = x;
if (y != null){
result = result + y;
}
if (z != null){
result = result + z;
}
print(result);
}
// µ÷ÓÃ
add(18); // 18
add(18,12); // 30
add(18, 12, 15); // 45 |
Èç¹ûÒª¸øÎ»ÖÿÉÑ¡²ÎÊýÉèÖÃĬÈÏÖµ£¬¿ÉÒÔʹÓÃÏÂÃæµÄ·½Ê½£º
add(int x, [int
y=0, int z=0]){
print(x +£ù£«£ú);
} |
ÄäÃûº¯Êý
´ó²¿·ÖÇé¿öÏ£¬º¯Êý¶¼ÓÐ×Ô¼ºµÄÃû×Ö£¬µ«ÎÒÃÇÒ²¿ÉÒÔ´´½¨Ã»ÓÐÃû×ֵĺ¯Êý£¬³ÆÎªÄäÃûº¯Êý¡£
var func = (x,y){
return x + y;
};
print(func(10,11)); // 21 |
±Õ°ü
±Õ°ü£¨Closure£©ÊÇÒ»ÖÖÄܱ»µ÷ÓöÔÏó£¬Ëü±£´æÁË´´½¨ËüµÄ×÷ÓÃÓòµÄÐÅÏ¢£¬Òò´Ë±Õ°ü¿ÉÒÔ¶ÁÈ¡ÆäËû×÷ÓÃÓòÄڵıäÁ¿Ê¹Óá£Ê¹ÓÃÄäÃûº¯Êý¿ÉÒÔÇáËɵÄʵÏÖDartµÄ±Õ°ü£¬ÀýÈ磺
Function makeAdder(num){
return (addNum){
return addNum + num;
};
}
main(){
var add5 = makeAdder(5);
var add10 = makeAdder(10);
print(add5(1)); // 6
print(add10(1)); // 11
} |
ÔËËã·û
DartÓïÑÔÖеÄÔËËã·ûÓëJavaÖеÄÔËËã·û¾ø´ó¶àÊýÏàͬ£¬Ö÷ÒªµÄÔËËã·ûÓÐÈçÏÂһЩ£º
ËãÊõÔËËã·û
ÏàµÈºÍ¹ØÏµÔËËã·û
ÀàÐͼì²éÔËËã·û
°´Î»ÔËËã·û
¸³ÖµÔËËã·û
Âß¼ÔËËã·û
ËãÊõÔËËã·û
DartµÄËãÊõÔËËã·û£¬³ýÁ˳£¼ûµÄ+¡¢-¡¢*¡¢/¡¢%Ö®Í⣬DartÖÐÓÖ¶à³öÁËÒ»¸öÕû³ýÔËËã·û~/£¬ÓëÆÕͨ³ýºÅµÄÇø±ðÊǽ«Ïà³ýºóµÄ½á¹ûÈ¡Õû·µ»Ø¡£

assert(2 + 3
== 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5);
assert(5 ~/ 2 == 2);
assert(5 % 2 == 1); |
¹ØÏµÔËËã·û
¹ØÏµÔËËã·û²âÊÔ»ò¶¨ÒåÁ½¸öʵÌåÖ®¼äµÄ¹ØÏµÀàÐÍ¡£DartµÄ¹ØÏµÔËËã·ûÈçÏÂ±í£º

ÀýÈ磺
assert(2 ==
2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3); |
ÀàÐͼì²éÔËËã·û
ÀàÐͼì²éÔËËã·û¿ÉÒÔ·½±ãµØÔÚÔËÐÐʱ¼ì²éÀàÐÍ£¬DartµÄÀàÐͼì²éÔËËã·ûÖ÷ÒªÓÉas¡¢isºÍis!×é³É¡£

°´Î»ÔËËã·û
DartÖ§³ÖµÄ°´Î»ÔËËã·û¼°Æä×÷ÓÃÈçÏÂ±í£º

ÀýÈ磺
final value
= 0x22;
final bitmask = 0x0f;
assert((value & bitmask) == 0x02);
assert((value & ~bitmask) == 0x20);
assert((value | bitmask) == 0x2f);
assert((value ^ bitmask) == 0x2d);
assert((value << 4) == 0x220);
assert((value >> 4) == 0x02); |
¸³ÖµÔËËã·û
¸³ÖµÓà = ÔËËã·û£¬Èç¹ûÔÚÇ°Ãæ¼ÓÉÏÆäËûÔËËã·û£¨±ÈÈç += £©¾Í¿ÉÒÔ×é³É¸´ºÏ¸³ÖµÔËËã·û¡£DartÖ§³ÖµÄ¸³ÖµÔËËã·ûÈçÏÂ±í£º

Âß¼ÔËËã·û
Âß¼ÔËËã·ûÓÃÓÚ×éºÏÁ½¸ö»ò¶à¸öÌõ¼þ£¬ Âß¼ÔËËã·û·µ»ØÒ»¸ö²¼¶ûÖµ¡£

ÀýÈ磺
if (!done &&
(col == 0 || col == 3)) {
// ...
} |
Ìõ¼þ·ÖÖ§
DartÖÐÌõ¼þ±í´ïʽºÍÆäËûÓïÑÔÀàËÆ£¬Ö÷ÒªÓÉifÓï¾ä¡¢if¡elseÓï¾äºÍelse¡ifÓï¾ä×é³É¡£

ÀýÈ磬ifÌõ¼þ·ÖÖ§
if(i < 0){
print('i < 0');
}else if(i == 0){
print('i = 0');
} else {
print('i > 0');
} |
switchÌõ¼þ·ÖÖ§£º
String command
= 'OPEN';
switch (command) {
case 'CLOSED':
break;
case 'OPEN':
break;
default:
print('Default');
} |
Ñ»·Óï¾ä
ºÍJavaµÄÑ»·Óï¾äÀàËÆ£¬DartµÄÑ»·Óï¾äÖ÷ÒªÓÉforÑ»·¡¢whileÑ»·ºÍdo¡whileÑ»·µÈÑ»·Óï¾ä¹¹³É¡£ÆäÖУ¬forÑ»·ºÍfor¡inÑ»·ÓÖ³ÆÎªÈ·¶¨(Definite)Ñ»·£¬ÈçÏÂ±í£º

ÀýÈ磺
for(int i =
0; i < 9; i++) {
print(i);
} |
whileÑ»·ºÍdo¡whileÑ»·±»³ÆÎªÎÞÏÞÑ»·£¬ÈçÏÂ±í£º

ÀýÈ磺
/ whileÑ»·
while(true){
//do something
}
// do-whileÑ»·
do{
//do something
} while(true); |
ΪÁË¿ØÖÆÑ»·Óï¾ä£¬¿ÉÒÔʹÓÃbreakÓï¾äºÍcontinueÓï¾ä£¬ÈçÏÂ±í£º

ÀýÈ磺
break¿ØÖÆÓï¾ä
void main()
{
outerloop: // This is the label name
for (var i = 0; i < 5; i++) {
print("Innerloop: ${i}");
innerloop:
for (var j = 0; j < 5; j++) {
if (j > 3 ) break ;
// Quit the innermost loop
if (i == 2) break innerloop;
// Do the same thing
if (i == 4) break outerloop;
// Quit the outer loop
print("Innerloop: ${j}");
}
}
} |
continue¿ØÖÆÓï¾ä
void main()
{
outerloop: // This is the label name
for (var i = 0; i < 3; i++) {
print("Outerloop:${i}");
for (var j = 0; j < 5; j++) {
if (j == 3){
continue outerloop;
}
print("Innerloop:${j}");
}
}
} |
|