Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Flutter¿ª·¢Ö®DartÓïÑÔ»ù´¡
 
×÷ÕߣºÏòÖ¾ºé
  1558  次浏览      27
2020-1-13
 
±à¼­ÍƼö:
ÎÄÕ½éÉÜÁËÒ»ÖÖ¿ªÔ´µÄͨÓñà³ÌÓïÑÔ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-sdk-path>\bin

Èç¹ûÒªÑéÖ¤ÊÇ·ñ³É¹¦°²×°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ÖеÄÔ¤¶¨Òå·½·¨£¬´Ë·½·¨³äµ±Ó¦ÓóÌÐòµÄÈë¿Úµã¡£Ö´ÐÐÉÏÃæµÄ´úÂ룬Êä³ö½á¹ûÈçÏ£º

Hello World!

˵Ã÷£¬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ÖеÄÊý×éÏàËÆ¡£

var list = [1, 2, 3];

ÁбíʹÓôÓ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·Ç³£ÓÐÓã¬ÒòΪËõС»á¸ü¸Ä±êʶ·ûÃû³Æ¶ø²»»á¸ü¸Ä±êʶ·û·ûºÅ¡£

Òª»ñÈ¡±êʶ·ûµÄ·ûºÅ£¬ÇëʹÓ÷ûºÅÎÄ×Ö£¬ÀýÈ磺

#radix
#bar

º¯Êý

º¯ÊýÊÇÒ»×éÓÃÓÚÖ´ÐÐÌØ¶¨ÈÎÎñµÄ´úÂë¿é£¬ÎÒÃÇ¿ÉÒÔ½«³ÌÐò¿´³ÉÊǶà¸öº¯Êý°´ÕÕ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}");
}
}
}

 

 
   
1558 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì