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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Flutter ²¼¾ÖÏê½â
 
  1993  次浏览      28
 2018-10-15
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬±¾ÎÄÖ÷Òª½éÉÜÁËFlutter²¼¾ÖÏà¹ØµÄÄÚÈÝ£¬¶ÔÏà¹ØÖªÊ¶µã½øÐÐÁËÊáÀí£¬²¢´Óʵ¼ÊÀý×Ó´¥·¢£¬½øÒ»²½½²½â¸ÃÈçºÎÈ¥½øÐв¼¾Ö¡£

1. ¼ò½é

ÔÚ½éÉÜFlutter²¼¾Ö֮ǰ£¬ÎÒÃǵÃÏÈÁ˽âFlutterÖеÄһЩ²¼¾ÖÏà¹ØµÄÌØÐÔ¡£

1.1 ±ß½çÔ¼Êø£¨box constraints£©

box constraintsÓÐÈËÒ²·­ÒëΪºÐÔ¼Êø¡¢ÏäÔ¼Êø£¬ÎÒ¸öÈË»¹ÊǾõµÃ±ß½çÔ¼Êø¿ÉÄܸüÖ±¹ÛһЩ¡£

FlutterÖеı߽çÔ¼Êø£¬ÊÇÖ¸widget¿ÉÒÔ°´ÕÕÖ¸¶¨ÏÞ¶¨Ìõ¼þ£¬À´¾ö¶¨×ÔÉíÈçºÎÕ¼Óò¼¾Ö¿Õ¼ä¡£Flutter½è¼øÁ˺ܶàReactÏà¹ØµÄ¶«Î÷£¬°üÀ¨Ò»Ð©²¼¾Ö˼Ï룬µ«ÊÇËü×ÔÉíûÓгéÀë³ö²¼¾ÖÑùʽ£¬¶øÊÇÓò»Í¬µÄwidgetȥʵÏÖ²»Í¬µÄ²¼¾Ö£¬½«ÑùʽǶÈëwidgetÖУ¬Óû§¿ÉÒÔÏñ´î»ýľһÑùд²¼¾Ö£¬Ð´·¨ÉϸúReactºÜÏñ£¬Ö»²»¹ýûÁËÑùʽµÄÉ趨¡£

ÕâÑù×öµÄºÃ´¦£¬ÎÒ¾õµÃ¿ÉÄÜÊÇΪÁËͳһµÄäÖȾ¡£¼ÓÈëÑùʽ£¬»áÈò¼¾Ö¸´ÔÓ²»ÉÙ£¬ÔÚäÖȾ²ãÃæ»á½µµÍºÜ¶àÐÔÄÜ¡£Òò´Ë£¬FlutterÔÚ´óµÄ·½ÏòÉÏ£¬¼ÓÈ벻ͬÀàÐ͵IJ¼¾Öwidget¡£ÔÚСµÄ·½ÏòÉÏ£¬Ö»¸ø³öºÜÉٵ͍֯»¯µÄ¶«Î÷£¬½«²¼¾ÖÏÞ¶¨ÔÚÓÐÏ޵ķ¶Î§ÄÚ£¬ÔÚÍê³É²¼¾ÖµÄͬʱ£¬ÈÃÕû¸öäÖȾÄܹ»Í³Ò»£¬¼Ó¿ìÁ˸üкÍäÖȾ¡£

µ«ÊÇ£¬È±µãÒ²ÊÇͬÑùÃ÷ÏÔ£¬ÉÙÁ˺ܶàÁé»îÐÔ£¬²»Í¬µÄ²¼¾Ö·½Ê½¶¼±»³éÀë³öÁËwidget£¬´ó¼ÒÐèÒªÁ˽âµÄwidget·Ç³£¶à£¬Ôö¼ÓÁËѧϰ³É±¾¡£

1.2 Ô¼ÊøÖÖÀà

ÔÚFlutterÖУ¬widgetÊÇÓÉÆäµ×²ãµÄRenderBoxäÖȾ£¬äÖȾ±ß½çµÄÔ¼Êø£¨Constraints£©Óɸ¸¼¶¸ø³ö£¬widgetÔÚÕâÐ©Ô¼ÊøÏµ÷Õû×ÔÉí³ß´ç¡£Ô¼Êø°üÀ¨×îС×î´ó¿í¸ß£¬³ß´çÔòÊǾßÌåµÄ¿í¸ß¡£

ÔÚAndroidÖУ¬²¼¾ÖµÄ¿í¸ßÏÞ¶¨ÓÐÈýÖÖ£¬match_parent¡¢wrap_contentÒÔ¼°¾ßÌå³ß´ç¡£ÔÚFlutterÖУ¬Ò²ÓÐÕâÈýÖÖÔ¼Êø¡£

¾¡¿ÉÄÜ´óµÄÔ¼Êø£¬ÀýÈçCenter¡¢ListViewµÈ£»

¸úËæÄÚÈÝ´óСµÄÔ¼Êø£¬ÀýÈçTransform¡¢OpacityµÈ£»

Ö¸¶¨³ß´çµÄÔ¼Êø£¬ÀýÈçImage¡¢TextµÈ£»

µ«ÊÇ£¬Flutter²¢Ã»ÓаÑwidget´¦ÀíµÄÕâô¾ø¶Ô£¬ÕâÐ©Ô¼ÊøÌõ¼þ°üº¬ÔÚwidgetÀ²»ÏñAndroid¿ÉÒÔÔÚÍâÃæÈ¥Ö¸¶¨¡£Òò´Ë£¬Ò»Ð©widget£¬ÀýÈçContainer£¬»á¸ù¾Ý²ÎÊýµÄ²»Í¬£¬Ô¼ÊøÌõ¼þÒ²²»Í¬¡£ContainerĬÈÏÊǾ¡¿ÉÄÜ´óµÄ£¬µ«ÊǸø¶¨³ß´çµÄ»°£¬¾Í»áÓÅÏÈʹÓþßÌåÖµ¡£²»Í¬µÄwidget¿ÉÄÜÉèÖÃÌõ¼þ²»Í¬¡¢Æä×Ówidget²»Í¬£¬Ô¼ÊøÌõ¼þÒ²»á²»Ò»Ñù¡£Flutter½«Ã¿ÖÖwidgetÏÞÖÆÔÚ²»Í¬µÄÔ¼Êø·¶Î§Àʵ¼Ê²¼¾ÖµÄʱºò£¬»¹ÐèÒª×ÛºÏÈ¥¿¼ÂÇ¡£

2. ·ÖÀà

°´ÕÕÔ¼ÊøÌõ¼þÀ´·ÖÀ࣬ºÜ¶àwidget²»Ì«ºÃÇø·Ö¿ªÀ´£¬¹Ù·½Ò²ÊǸù¾ÝÆä×ÓÔªËØµÄ¸öÊýÀ´·ÖÀà¡£

µ¥¸ö×ÓÔªËØ£¨child£©µÄ²¼¾Ö£¬°üÀ¨Container¡¢PaddingµÈ18ÖÖ£¨Ä¿Ç°ÊÇ2018Äê5ÔÂ25ÈÕ£¬ºóÐøÎÒÏë¿Ï¶¨»áÔö¼ÓµÄ£¬ÏÂÃæÀàËÆ£©£»

¶à¸ö×ÓÔªËØ£¨children£©µÄ²¼¾Ö£¬°üÀ¨Row¡¢ColumnµÈ11ÖÖ£»

layout helper£¬ÀýÈçListView.Builder£¬ÔÚÔªËØ¶àµÄʱºò£¬ÓÃÕâÖÖ·½Ê½¸ü¼ÓµÄ¸ßЧ£¬ÀàËÆAndroidµÄRecyclerView£¬ÓÐ×Ô¶¯µÄ»ØÊÕ»úÖÆ¡£ÕâÖÖÑϸñÒâÒåÉϲ»ÄÜËãÊÇÒ»¸öÖÖÀ࣬ÎÒ¾õµÃÕâÖÖhelper»áÔ½À´Ô½¶à¡£

2.1 ÓÅȱµã

ÆäÖÐÈÕ³£ÖÐÓõĶàµÄ£¬ÀýÈçContainer¡¢Padding¡¢Center¡¢Align¡¢Row¡¢Column¡¢Stack¡¢ListViewµÈÒ²ÓÐÉÏÊ®ÖÖ¡£

FlutterÌṩ½Ó½ü30¶àÖÖ²»Í¬µÄ²¼¾Öwidget£¬»¹ÊÇÔ´ÓÚÆä¶ÔwidgetµÄ¶¨Î»£¨ÔÚ´Ë´¦²»ÔÙ²ûÊö£¬ÏëÁ˽âµÄ£¬¿ÉÒÔ·­¿´±ÊÕß֮ǰÎÄÕµĽéÉÜ£©¡£¶Ô±ÈÆäËûÒÆ¶¯¶ËµÄ¿ª·¢Æ½Ì¨£¬¿ÉÒÔ¿´³öFlutterµÄ²¼¾ÖwidgetÊǾ޶࣬ÕâÒ²ÊÇΪʲôFlutterÏÖÔÚѧϰÇúÏߺܳ¤µÄÒ»¸öÔ­Òò¡£

ÏÈÀ´ËµÏÂÓŵ㣬ͳһäÖȾ£¬¸üÐÂЧÂʸü¸ß¡£µ«ÊÇ£¬¶ÔÓÚÆÕͨ¿ª·¢Õß¶øÑÔ£¬ÊDz»»áȥ̫ÔÚºõÕâЩµÄ¡£ÐÔÄܸ߱¾À´¾ÍÊÇÆ½Ì¨Ó¦¸ÃÌṩµÄ×î»ù±¾µÄÄÜÁ¦£¬ÄѵÀ²»ÊÇÄãÓ¦¸ÃÌṩµÄÂð£¿

È»ºó˵ÏÂȱµã°É£¬ÕÆÎÕÆðÀ´»¹ÊǷdz£·ÑÊµģ¬²¼¾ÖÆðÀ´Ò²ÊÇͦµ°Ì۵ġ£³£¹æµÄ²¼¾Ö»¹ºÃ£¬Ò»µ½¸´ÔӵIJ¼¾Ö£¬¾õµÃÕâ¸öÒ²ÄÜʵÏÖ£¬ÄǸöÒ²ÄÜʵÏÖ£¬×îºó²»ÖªµÀÄĸö¿ÉÒÔʵÏÖ¡£

2.2 ¸öÈË¿´·¨

Flutter¶ÔÓÚÐÔÄܵÄÓÅ»¯£¬°Ñƽ̨²àµÄһЩ³É±¾×ª½Óµ½¿ª·¢ÕßÉíÉÏ£¬²»¹ýÄØ£¬ÏÖÔÚÒ²ÊÇFlutterµÄ³õÆÚ£¬¿ÉÒÔ¿´³ö£¬ÕûÌåµÄÉè¼ÆË¼Â·»¹ÊǷdz£ºÃµÄ£¬Ò²Ö»ÓйȸèÕâÖÖÂÖ×Ӵ󳧲ŸÒÕâô¸É¡£µ«ÊÇ£¬ºÜÃ÷ÏÔÉÙÁËЩÈËΪ¹Ø»³£¬²»Í¬widget¼äÔ¼ÊøÌõ¼þ´©²å×Å£¬Ò²¿ÉÒÔ˵Flutter²¼¾Ö¿Ø¼þÖÖÀàµÄÔö¼Ó£¬ÊÇÆä²»¶ÏµÄ´ò²¹¶¡µ¼Öµģ¬ºóÐøµÄ¸÷ÖÖhelper£¬Ò²ÊÇΪÁËÌî¿Ó£¬ÕâÒ»¿é¶ùFlutterÏÔȻûÓд¦ÀíµÄºÜºÃ¡£

µ«ÊÇ£¬·²Ê¶¼Óиö¹ý³Ì£¬²»ÄÜ˵FlutterÕâЩµØ·½×öµÄ²»ºÃ£¬Ö»ÊÇĿǰ¿´ÆðÀ´±È½Ï»ìÂÒ£¬ÀíÏëµÄ¼Ü¹¹Éè¼Æ£¬Â䵨ÏÂÀ´£¬¿ÉÄܾͲ»ÊÇÄÇô¼òµ¥£¬¿ª·¢ÕßµÄÐèÇóǧ²îÍò±ð£¬ÓÐÁËÉú̬£¬Ê²Ã´¶¼ºÃ˵£¬µ±È»Õâ¸ö¹ý³Ì£¬Ô¤¼ÆÊÇ»á·Ç³£µÄ»ºÂý¡£

3. widgetÏê½â

ÔÚFlutterÖУ¬ÎÒÃÇÆ½Ê±×Ô¶¨ÒåµÄwidget£¬Ò»°ã¶¼ÊǼ̳Ð×ÔStatefulWidget»òStatelessWidget£¨²¢²»ÊÇÖ»ÓÐÕâÁ½ÖÖ£©£¬ÕâÁ½ÖÖwidgetÒ²ÊÇĿǰ×î³£ÓõÄÁ½ÖÖ¡£Èç¹ûÒ»¸ö¿Ø¼þ×ÔÉí״̬²»»áÈ¥¸Ä±ä£¬´´½¨Á˾ÍÖ±½ÓÏÔʾ£¬²»»áÓÐɫֵ¡¢´óС»òÕ߯äËûÊôÐԵı仯£¬ÕâÖÖwidgetÒ»°ã¶¼ÊǼ̳Ð×ÔStatelessWidget£¬³£¼ûµÄÓÐContainer¡¢ScrollViewµÈ¡£Èç¹ûÒ»¸ö¿Ø¼þÐèÒª¶¯Ì¬µÄÈ¥¸Ä±ä»òÕßÏàӦһЩ״̬£¬ÀýÈçµã»÷̬¡¢É«Öµ¡¢ÄÚÈÝÇøÓòµÈ£¬ÄÇôһ°ã¶¼ÊǼ̳Ð×ÔStatefulWidget£¬³£¼ûµÄÓÐCheckBox¡¢AppBar¡¢TabBarµÈ¡£Æäʵµ¥´¿µÄ´ÓÃû×ÖÒ²¿ÉÒÔ¿´³öÕâÁ½ÖÖwidgetµÄÇø±ð£¬ÕâÁ½ÖÖwidget¶¼ÊǼ̳Ð×ÔWidgetÀà¡£

3.1 WidgetÀà

WidgetÀàÔÚFlutterÖÐÊǷdz£ÖØÒªµÄ£¬¼Ì³Ð×ÔWidgetÀàµÄÓÐPreferredSizeWidget¡¢ProxyWidget¡¢RenderObjectWidget¡¢StatefulWidget¡¢StatelessWidget¡£ÎÒÃÇÈÕ³£Ê¹Óõľø´ó²¿·Öwidget¶¼ÊǼ̳Ð×ÔWidgetÀ࣬

²é¿´WidgetÀàÔ´Â룬ÄÚ²¿ÊµÏַdz£¼òµ¥£¬¹¹Ô캯ÊýÈçÏÂ

const Widget({ this.key });
final Key key;

Õâ¸ökeyµÄ×÷Óã¬×¢ÊÓÉÏдµÄºÜÇå³þ£¬ÊÇÓÃÀ´¿ØÖÆÔÚwidgetÊ÷ÖÐÌæ»»widgetµÄʱºòʹÓõġ£ÆäÖÐKeyÀàÊÇWidget¡¢ElementÒÔ¼°SemanticsNodeµÄΨһ±êʶ·û£¬¼Ì³Ð×ÔKeyµÄ»¹ÓÐLocalKeyÒÔ¼°GlobalKey¡£

3.2 State

ÔÚ˵µ½StatefulWidget֮ǰ£¬ÏÈ˵ÏÂState¡£StateµÄ×÷ÓÃÓÐÁ½µã£º

ÔÚwidget¹¹½¨µÄʱºò¿ÉÒÔ±»Í¬²½¶ÁÈ¡£»

ÔÚwidgetµÄÉúÃüÖÜÆÚÖпÉÄܻᱻ¸Ä±ä¡£

3.2.1 StateÉúÃüÖÜÆÚ

StateµÄÉúÃüÖÜÆÚÓÐËÄÖÖ״̬£º

created£ºµ±State¶ÔÏó±»´´½¨Ê±ºò£¬State.initState·½·¨»á±»µ÷Óã»

initialized£ºµ±State¶ÔÏó±»´´½¨£¬µ«»¹Ã»ÓÐ×¼±¸¹¹½¨Ê±£¬State.didChangeDependenciesÔÚÕâ¸öʱºò»á±»µ÷Óã»

ready£ºState¶ÔÏóÒѾ­×¼±¸ºÃÁ˹¹½¨£¬State.disposeûÓб»µ÷ÓõÄʱºò£»

defunct£ºState.dispose±»µ÷Óúó£¬State¶ÔÏó²»Äܹ»±»¹¹½¨¡£

ÍêÕûÉúÃüÖÜÆÚÈçÏ£º

´´½¨Ò»¸öState¶ÔÏóʱ£¬»áµ÷ÓÃStatefulWidget.createState£»

ºÍÒ»¸öBuildContextÏà¹ØÁª£¬¿ÉÒÔÈÏΪ±»¼ÓÔØÁË£¨mounted£©£»

µ÷ÓÃinitState£»

µ÷ÓÃdidChangeDependencies£»

¾­¹ýÉÏÊö²½Ö裬State¶ÔÏó±»ÍêÈ«µÄ³õʼ»¯ÁË£¬µ÷ÓÃbuild£»

Èç¹ûÓÐÐèÒª£¬»áµ÷ÓÃdidUpdateWidget£»

Èç¹û´¦ÔÚ¿ª·¢Ä£Ê½£¬ÈȼÓÔØ»áµ÷ÓÃreassemble£»

Èç¹ûËüµÄ×ÓÊ÷£¨subtree£©°üº¬ÐèÒª±»ÒƳýµÄState¶ÔÏ󣬻áµ÷ÓÃdeactivate£»

µ÷ÓÃdispose,State¶ÔÏóÒÔºó¶¼²»»á±»¹¹½¨£»

µ±µ÷ÓÃÁËdispose,State¶ÔÏó´¦ÓÚδ¼ÓÔØ£¨unmounted£©£¬ÒѾ­±»disposeµÄState¶ÔÏóûÓа취±»ÖØÐ¼ÓÔØ£¨remount£©¡£

3.2.2 setState

StateÖбȽÏÖØÒªµÄÒ»¸ö·½·¨ÊÇsetState£¬µ±ÐÞ¸Ä״̬ʱ£¬widget»á±»¸üС£±È·½Ëµµã»÷CheckBox£¬»á³öÏÖÑ¡ÖкͷÇÑ¡ÖÐ״̬֮¼äµÄÇл»£¬¾ÍÊÇͨ¹ýÐÞ¸Ä״̬À´´ïµ½µÄ¡£

²é¿´setStateÔ´Â룬ÔÚһЩÒì³£µÄÇé¿öϽ«»áÅ׳öÒì³££º

´«ÈëµÄΪnull£»

´¦ÔÚdefunct½×¶Î£»

created½×¶Î»¹Ã»Óб»¼ÓÔØ£¨mounted£©£»

²ÎÊý·µ»ØÒ»¸öFuture¶ÔÏó¡£

¼ì²éÍêһϵÁÐÒì³£ºó£¬×îºóµ÷ÓôúÂëÈçÏ£º

_element.markNeedsBuild();

markNeedsBuildÄÚ²¿£¬ÔòÊÇͨ¹ý±ê¼ÇelementΪdiry£¬ÔÚÏÂÒ»Ö¡µÄʱºòÖØ½¨£¨rebuild£©¡£¿ÉÒÔ¿´³ösetState²¢²»ÊÇÁ¢¼´ÉúЧ£¬ËüÖ»Êǽ«widget½øÐÐÁ˱ê¼Ç£¬ÕæÕýµÄrebuild²Ù×÷£¬ÔòÊǵȵ½ÏÂÒ»Ö¡µÄʱºò²Å»áÈ¥½øÐС£

3.3 StatefulWidgetºÍStatelessWidget

StatefulWidgetºÍStatelessWidgetÈçÏÂËùʾ

Ò»¸öStatelessWidget¿ÉÒÔÓöà¸ö²»Í¬µÄBuildContext¹¹½¨£¬¶øÒ»¸öStatefulWidget»áΪÿ¸öBuildContext´´½¨Ò»¸öState¶ÔÏó¡£

3.3.1 StatelessWidget

¶ÔÓÚStatelessWidget£¬build·½·¨»áÔÚÈçÏÂÈýÖÖÇé¿öϵ÷Óã¬

widgetµÚÒ»´Î±»²åÈëµ½Ê÷ÖУ»

widgetµÄ¸¸½Úµã¸ü¸ÄÁËÅäÖã¨configuration£©£»

widgetÒÀÀµµÄInheritedWidget¸Ä±äÁË¡£

class GreenFrog extends StatelessWidget {
const GreenFrog({ Key key }) : super(key: key);

@override
Widget build(BuildContext context) {
return new Container(color: const Color(0xFF2DBD3A));
}
}

3.3.2 StatefulWidget

StatefulWidgetµÄÁ½¸öÖ÷ÒªÀà±ð£º

ÔÚinitStateÖд´½¨×ÊÔ´£¬ÔÚdisposeÖÐÏú»Ù£¬µ«ÊDz»ÒÀÀµÓÚInheritedWidget»òÕßµ÷ÓÃsetState·½·¨£¬ÕâÀàwidget»ù±¾ÉÏÓÃÔÚÒ»¸öÓ¦ÓûòÕßÒ³ÃæµÄroot£»

ʹÓÃsetState»òÕßÒÀÀµÓÚInheritedWidget£¬ÕâÖÖÔÚÓªÒµÉúÃüÖÜÆÚÖÐ»á±»ÖØ½¨£¨rebuild£©ºÜ¶à´Î¡£

class YellowBird extends StatefulWidget {
const YellowBird({ Key key }) : super(key: key);

@override
_YellowBirdState createState() => new _YellowBirdState();
}


class _YellowBirdState extends State<YellowBird> {
@override
Widget build(BuildContext context) {
return new Container(color: const Color(0xFFFFE306));
}
}

4. ÈçºÎ²¼¾Ö

ÿ¸öÒ³ÃæÉè¼Æ¶¼²»Ò»Ñù£¬ÏàÍ¬Ò³Ãæ¿ÉÑ¡ÔñµÄ²¼¾Ö·½Ê½Ò²²»Ò»Ñù£¬Èç¹ûµ¥´¿µÄ˵Ӧ¸ÃÈçºÎÈ¥²¼¾Ö£¬ÎÒ¾õµÃ²»ÏÖʵ£¬´ó¼Ò¿ÉÒԲο¼ÏÂFlutter¹Ù·½µÄ²¼¾Ö½Ì³Ì¡£½ÓÏÂÀ´£¬±ÊÕߣ¬Í¨¹ýÒ»¸ö¼òµ¥µÄÒ³Ãæ£¬À´Ò»²½Ò»²½µÄ²ð½â²¼¾ÖµÄÁ÷³Ì¡£Õû¸ö¹ý³Ì£¬»ù±¾Éϰ´ÕÕ²ð½â¡¢×é¼þ·â×°¡¢¾ßÌå²¼¾ÖÕâÈý²½À´µÄ¡£

4.1 ²ð½â

4.1.1 ÕûÌå²ð½â

¸ù¾ÝÉè¼ÆÍ¼£¬¿ÉÒÔ¿´³öÕûÌåʱ·ÖÐÐչʾµÄ£¬Òò´Ë×îÍâ²ãÊÇÒ»¸öColumnÔªËØ

µÚÒ»ÐÐΪ±êÌâ£¬Éæ¼°µ½²»¶Ô³ÆµÄ²¼¾Ö£¬¿ÉÒÔÓÃÒ»¸öStack»òÕßRowÀ´½øÐУ¬ÓÃRowµÄ»°£¬ÔòÐèÒªÓÒ±ßÌîÉÏÒ»¸ö¿Õ°×µÄwidgetռλ¡£Ò²¿ÉÄÜ»áʹÓÃAppBar£¬½«µ×²¿ÒõÓ°È¥µôÒ²ÄÜʵÏÖÏàͬЧ¹û£»

µÚ¶þÐпÉÒÔ¿´×÷Ò»¸öRow£¬·ÖÁ½¿é²¼¾Ö¡£Óұ߲¿·Ö£¬Éæ¼°µ½µþ¼Ó£¬»á¿¼ÂÇStack£»

µÚÈýÐбȽϸ´ÔÓ£¬ÕûÌå¿´£¬Ò²ÊÇÒ»ÐÐÒ»ÐнøÐÐչʾµÄ£¬Òò´Ë×îÍâ²ãʱһ¸öColumn¡£ÖмäµÄÎı¾²¿·ÖÐèÒª¸ù¾Ý¸öÊý×Ô¶¯»»ÐУ¬Òò´Ë¿¼ÂÇʹÓÃWrap¡£Ô¤Ï°Õâ¸öµØ·½Éæ¼°µ½µþ¼Ó£¬¿¼ÂÇStackʵÏÖ£»

µÚËÄÐпÉÒÔ¿´×÷Ò»¸öRow£¬·ÖÈý¿é½øÐв¼¾Ö£»

µÚÎåÐпÉÒÔ¿´×÷Ò»¸öRow£¬·ÖÁ½¿é²¼¾Ö¡£

ÿһÐÐÖ®¼äµÄ¼ä¸ô£¬Ôò¿ÉÒÔ¿¼ÂÇÓÃPadding»òÕßContainerÀ´ÉèÖá£

ͨ¹ýÉÏÃæÕâÑùÒ»²½Ò»²½µÄ·ÖÎöºó£¬»ù±¾É϶ԴóÖµIJ¼¾ÖÓÐÁËÒ»¸öÁ˽⣬×îÍâ²ãµÄ¿Ø¼þ´óÖÂÑ¡¶Ô£¨Ö»ÒªÄÜʵÏֵϰ£¬¾ÍÊǸ´ÔÓ¶ÈÒÔ¼°Ð§ÂʵÄÎÊÌ⣩£¬È»ºóÒ»²½Ò»²½µÄ²ð½âÿһÐеÄÔªËØ£¬Èç¹ûÓÐÖØ¸´µÄ»òÕß¾õµÃ¿ÉÒÔ·â×°³öÀ´µÄ²¿·Ö£¬Ôò½øÐÐÏÂÒ»²½¡£

4.1.2 ¾Ö²¿²ð½â

ÿһÐеIJð½â£¬´óÖÂÒ²Êǰ´ÕÕÕâ¸ö˼·À´½øÐУ¬Òò´Ë±ÊÕßÔÚÕâÀï¾Í²»×ö½²½âÁË¡£

4.2 ×é¼þ·â×°

ÀýÈçÉÏÃæ£¬±ÊÕßÏë¶ÔµÚËÄÐеÄÕâÖÖչʾ½øÐзâ×°£¬¾õµÃ½ñºóµÄ²¼¾Ö¿ÉÄÜ»áÓõ½£¬Òò´ËÔÚÕâÒ»²½£¬¿ÉÒÔÏȰÑÕâÒ»¿é¶ù³éÀë³öÒ»¸ö¿Ø¼þ¡£ÀûÓÃRowµÄmainAxisAlignmentÒÔ¼°ExpandedÀ´ÊµÏÖÕâÖÖЧ¹û£¬¾ßÌåµÄʵÏÖ±ÊÕß²»ÔÙÏêϸµÄÃèÊöÁË¡£

¾­¹ýÕâÒ»²½£¬ÕûÌåµÄ¹æ»®Éè¼ÆÍ¼ÒѾ­ÓÐÁË£¬¸÷¸ö×é¼þÒ²¶¼ÓÐÁË£¬½ÓÏÂÀ´µÄ¹¤×÷¾ÍÊÇ×é×°ÁË¡£

4.3 ¾ßÌå²¼¾Ö

¾ßÌå²¼¾ÖÉè¼Æµ½Ò»Ð©Ï¸½ÚµÄµØ·½£¬ÀýÈç¼ä¸ô£¨Padding»òÕßContainer£©¡¢¾Ó×ó¾ÓÓÒ¾ÓÖУ¨Align£©¡¢µã»÷ʼþ£¨GestureDetector£©ÒÔ¼°Ô²½Ç£¨ClipRRect£©µÈÒ»Ð©ÌØÊâÇé¿ö£¬»ù±¾ÉϾÍÊÇǶÌ×£¬Ò»²ãÒ»²ãȥʵÏÖ¡£

ÔÚʵ¼Ê²¼¾ÖÖУ¬±ÊÕßʵ¼ÊʹÓõÄÊÇScaffold£¬¶¥²¿µÄAppBar½«ÒõÓ°Ö±½ÓÈ¥µô¼´¿ÉʵÏÖЧ¹û£¬body²¿·ÖÔòʵÏÖ2-5ÐеÄÄÚÈÝ¡£×îÍâ²ãÌ×Ò»¸öColumnÒ²ÄÜʵÏÖ£¬±¾ÖÊÉ϶¼Ã»Ê²Ã´Çø±ð£¬ÔËÐÐЧ¹ûͼÈçÏÂËùʾ¡£

4.4 ´úÂë

ÂëGithubµØÖ·

 
   
1993 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

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

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

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