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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Flutter ʵÏÖÔ­Àí¼°¿çƽ̨ʵ¼ù
 
×÷ÕߣºÂí·äÎѵçÉÌÑз¢¿Í»§¶ËÍŶÓ
  2088  次浏览      28
2020-6-2 
 
±à¼­ÍƼö:
±¾ÎÄÖØµã½éÉÜÁËFlutter ¼Ü¹¹ºÍʵÏÖÔ­Àí£¬¿ò¼Ü£¬Flutter ÔÚÂí·äÎÑÉ̼ҶËApp ÖеÄÓ¦ÓÃʵ¼ù¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

Ò»Ö±ÒÔÀ´£¬¿çƽ̨¿ª·¢¶¼ÊÇÀ§ÈÅÒÆ¶¯¿Í»§¶Ë¿ª·¢µÄÄÑÌâ¡£

ÔÚÂí·äÎÑÂÃÓÎ App ºÜ¶àÒµÎñ³¡¾°ÀÎÒÃdz¢ÊÔ¹ýһЩÖ÷Á÷µÄ¿çƽ̨¿ª·¢½â¾ö·½°¸£¬ ±ÈÈçWebView ºÍ React Native£¬À´ÌáÉý¿ª·¢Ð§ÂʺÍÓû§ÌåÑé¡£µ«ÕâÁ½ÖÖ·½Ê½Ò²´øÀ´ÁËеÄÎÊÌâ¡£

±ÈÈçʹÓà WebView ¿çƽ̨·½Ê½£¬Óŵãȷʵ·Ç³£Ã÷ÏÔ¡£»ùÓÚ WebView µÄ¿ò¼Ü¼¯³ÉÁ˵±Ï Web ¿ª·¢µÄÖî¶àÓÅÊÆ£º·á¸»µÄ¿Ø¼þ¿â¡¢¶¯Ì¬»¯¡¢Á¼ºÃµÄ¼¼ÊõÉçÇø¡¢²âÊÔ×Ô¶¯»¯µÈµÈ¡£µ«ÊÇȱµãҲͬÑùÃ÷ÏÔ£ºäÖȾЧÂÊºÍ JavaScript µÄÖ´ÐÐÄÜÁ¦¶¼±È½Ï²î£¬Ê¹Ò³ÃæµÄ¼ÓÔØËٶȺÍÓû§ÌåÑé¶¼²»¾¡ÈçÈËÒâ¡£

¶øÊ¹ÓÃÒÔ React Native£¨¼ò³Æ RN£©Îª´ú±íµÄ¿ò¼Üʱ£¬Î¬»¤ÓÖ³ÉÁË´óÄÑÌâ¡£RN ʹÓÃÀà HTML+JS µÄ UI ´´½¨Âß¼­£¬Éú³É¶ÔÓ¦µÄÔ­ÉúÒ³Ãæ£¬½«Ò³ÃæµÄäÖȾ¹¤×÷½»¸øÁËϵͳ£¬ËùÒÔäÖȾЧÂÊÓкܴóµÄÓÅÊÆ¡£µ«ÓÉÓÚ RN ´úÂëÊÇͨ¹ý JS ÇŽӵķ½Ê½×ª»»ÎªÔ­ÉúµÄ¿Ø¼þ£¬ËùÒÔÊܸ÷¸öϵͳ¼äµÄ²îÒìÓ°Ïì·Ç³£´ó£¬ËäÈ»¿ÉÒÔ¿ª·¢Ò»Ì×´úÂ룬µ«¶Ô¸÷¸öƽ̨µÄÊÊÅäÈ´·Ç³£µÄ·±ËöºÍÂé·³¡£

ΪʲôÊÇ Flutter

2018 Äê 12 Ô³õ£¬Google Õýʽ·¢²¼ÁË¿ªÔ´¿çƽ̨ UI ¿ò¼Ü Flutter 1.0 Release °æ±¾£¬Âí·äÎѵçÉ̿ͻ§¶ËÍŶӽøÐÐÁ˵÷ÑÐÓëʵ¼ù£¬·¢ÏÖFlutterÄܺܺõİïÖúÎÒÃǽâ¾ö¿ª·¢ÖÐÓöµ½µÄÎÊÌâ¡£

¿çƽ̨¿ª·¢£¬Õë¶Ô Android Óë iOS µÄ·ç¸ñÉè¼ÆÁËÁ½Ì×Éè¼ÆÓïÑԵĿؼþʵÏÖ£¨Material & Cupertino£©¡£ÕâÑù²»µ«Äܹ»½ÚÔ¼ÈËÁ¦³É±¾£¬¶øÇÒÔÚÓû§ÌåÑéÉϸüºÃµÄÊÊÅä App ÔËÐÐµÄÆ½Ì¨¡£

ÖØÐ´ÁËÒ»Ì×¿çÆ½Ì¨µÄ UI ¿ò¼Ü£¬äÖȾÒýÇæÊÇÒÀ¿¿ Skia ͼÐοâʵÏÖ¡£Flutter ÖеĿؼþÊ÷Ö±½ÓÓÉäÖȾÒýÇæºÍ¸ßÐÔÄܱ¾µØ ARM ´úÂëÖ±½Ó»æÖÆ£¬²»ÐèҪͨ¹ýÖмä¶ÔÏó£¨Web Ó¦ÓÃÖеÄÐéÄâ DOM ºÍÕæÊµ DOM£¬Ô­Éú App ÖеÄÐéÄâ¿Ø¼þºÍƽ̨¿Ø¼þ£©À´»æÖÆ£¬Ê¹ËüÓнӽüÔ­ÉúÒ³ÃæµÄÐÔÄÜ£¬°ïÖúÎÒÃÇÌṩ¸üºÃµÄÓû§ÌåÑé¡£

ͬʱ֧³Ö JIT ºÍ AOT ±àÒë¡£JIT±àÒ뷽ʽʹÆäÔÚ¿ª·¢½×¶ÎÓиö±¸ÊÜ»¶Ó­µÄ¹¦ÄÜ¡ª¡ªÈÈÖØÔØ£¨HotReload£©£¬ÕâÑùÔÚ¿ª·¢Ê±¿ÉÒÔʡȥ¹¹½¨µÄ¹ý³Ì£¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£¶øÔÚ Release ÔËÐн׶βÉÓà AOT µÄ±àÒ뷽ʽ£¬Ê¹Ö´ÐÐЧÂʷdz£¸ß£¬Èà Release °æ±¾·¢»Ó¸üºÃµÄÐÔÄÜ¡£

ÓÚÊÇ£¬µçÉ̿ͻ§¶ËÍŶӾö¶¨Ì½Ë÷ Flutter ÔÚ¿çÆ½Ì¨¿ª·¢ÖеÄпÉÄÜ£¬²¢ÂÊÏÈÓ¦ÓÃÓÚÉÌ¼Ò¶Ë App ÖС£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«½áºÏ Flutter ÔÚÂí·äÎÑÉÌ¼Ò¶Ë App ÖеÄÓ¦ÓÃʵ¼ù£¬Ì½ÌÖ Flutter ¼Ü¹¹µÄʵÏÖÔ­Àí£¬ÓкÎÓÅÊÆ£¬ÒÔ¼°ÈçºÎ°ïÖúÎÒÃǽâ¾öÎÊÌâ¡£

Flutter ¼Ü¹¹ºÍʵÏÖÔ­Àí

Flutter ʹÓà Dart ÓïÑÔ¿ª·¢£¬Ö÷ÒªÓÐÒÔϼ¸µãÔ­Òò£º

Dart Ò»°ãÇé¿öÏÂÊÇÔËÐÐ DartVM ÉÏ£¬µ«ÊÇÒ²¿ÉÒÔ±àÒëΪ ARM ´úÂëÖ±½ÓÔËÐÐÔÚÓ²¼þÉÏ¡£

Dart ͬʱ֧³Ö AOT ºÍ JIT Á½ÖÖ±àÒ뷽ʽ£¬¿ÉÒÔ¸üºÃµÄÌá¸ß¿ª·¢ÒÔ¼° App µÄÖ´ÐÐЧÂÊ¡£

Dart ¿ÉÒÔÀûÓöÀÌØµÄ¸ôÀëÇø£¨Isolate£©ÊµÏÖ¶àÏ̡߳£¶øÇÒ²»¹²ÏíÄڴ棬¿ÉÒÔʵÏÖÎÞËø¿ìËÙ·ÖÅä¡£

·Ö´úÀ¬»ø»ØÊÕ£¬·Ç³£ÊÊºÏ UI ¿ò¼ÜÖг£¼ûµÄ´óÁ¿ Widgets ¶ÔÏó´´½¨ºÍÏú»ÙµÄÓÅ»¯¡£

ÔÚΪ´´½¨µÄ¶ÔÏó·ÖÅäÄÚ´æÊ±£¬Dart ÊÇÔÚÏÖÓеĶÑÉÏÒÆ¶¯Ö¸Õ룬±£Ö¤ÄÚ´æµÄÔö³¤ÊdzÌÏßÐԵģ¬ÓÚÊǾÍÊ¡Á˲éÕÒ¿ÉÓÃÄÚ´æµÄ¹ý³Ì¡£

Dart Ö÷ÒªÓÉ Google ¸ºÔ𿪷¢ºÍά»¤¡£Ä¿Ç° Dart ×îа汾ÒѾ­ÊÇ 2.2£¬Õë¶Ô App ºÍ Web ¿ª·¢×öÁ˺ܶàÓÅ»¯¡£²¢ÇÒ¶ÔÓÚ´ó¶àÊýµÄ¿ª·¢Õß¶øÑÔ£¬Dart µÄѧϰ³É±¾·Ç³£µÍ¡£

Flutter ¼Ü¹¹Ò²ÊDzÉÓõķֲãÉè¼Æ¡£´Óϵ½ÉÏÒÀ´ÎΪ£ºEmbedder£¨Ç¶ÈëÆ÷£©¡¢Engine¡¢Framework¡£

Embedder ÊÇǶÈë²ã£¬×öºÃÕâÒ»²ãµÄÊÊÅä Flutter »ù±¾¿ÉÒÔǶÈëµ½ÈÎºÎÆ½Ì¨ÉÏÈ¥£»

Engine ²ãÖ÷Òª°üº¬ Skia¡¢Dart ºÍ Text¡£Skia ÊÇ¿ªÔ´µÄ¶þλͼÐο⣻Dart ²¿·ÖÖ÷Òª°üÀ¨ runtime¡¢Garbage Collection¡¢±àÒëģʽ֧³ÖµÈ£»Text ÊÇÎı¾äÖȾ¡£

Framework ÔÚ×îÉϲ㡣ÎÒÃǵÄÓ¦ÓÃÎ§ÈÆ Framework ²ãÀ´¹¹½¨£¬Òò´ËÒ²ÊDZ¾ÎÄÒª½éÉܵÄÖØµã¡£

Framework

1.¡¾Foundation¡¿ÔÚ×îµ×²ã£¬Ö÷Òª¶¨Òåµ×²ã¹¤¾ßÀàºÍ·½·¨£¬ÒÔÌṩ¸øÆäËû²ãʹÓá£

2.¡¾Animation¡¿ÊǶ¯»­Ïà¹ØµÄÀ࣬¿ÉÒÔ»ùÓÚ´Ë´´½¨²¹¼ä¶¯»­£¨Tween Animation£©ºÍÎïÀíÔ­Àí¶¯»­£¨Physics-based Animation£©£¬ÀàËÆ Android µÄ ValueAnimator ºÍ iOS µÄ Core Animation¡£

3.¡¾Painting¡¿·â×°ÁË Flutter Engine ÌṩµÄ»æÖƽӿڣ¬ÀýÈç»æÖÆËõ·ÅͼÏñ¡¢²åÖµÉú³ÉÒõÓ°¡¢»æÖƺÐÄ£Ðͱ߿òµÈ¡£

4.¡¾Gesture¡¿Ìṩ´¦ÀíÊÖÊÆÊ¶±ðºÍ½»»¥µÄ¹¦ÄÜ¡£

5.¡¾Rendering¡¿ÊÇ¿ò¼ÜÖеÄäÖȾ¿â¡£¿Ø¼þµÄäÖȾÖ÷Òª°üÀ¨Èý¸ö½×¶Î£º²¼¾Ö£¨Layout£©¡¢»æÖÆ£¨Paint£©¡¢ºÏ³É£¨Composite£©¡£

´ÓÏÂͼ¿ÉÒÔ¿´µ½£¬Flutter Á÷Ë®Ïß°üÀ¨ 7 ¸ö²½Öè¡£

Ê×ÏÈÊÇ»ñÈ¡µ½Óû§µÄ²Ù×÷£¬È»ºóÄãµÄÓ¦ÓûáÒò´ËÏÔʾһЩ¶¯»­£¬½Ó×Å Flutter ¿ªÊ¼¹¹½¨ Widget ¶ÔÏó¡£

Widget ¶ÔÏó¹¹½¨Íê³Éºó½øÈëäÖȾ½×¶Î£¬Õâ¸ö½×¶ÎÖ÷Òª°üÀ¨Èý²½£º

²¼¾ÖÔªËØ£º¾ö¶¨Ò³ÃæÔªËØÔÚÆÁÄ»ÉϵÄλÖúʹóС£»

»æÖƽ׶Σº½«Ò³ÃæÔªËØ»æÖƳÉËüÃÇÓ¦ÓеÄÑùʽ£»

ºÏ³É½×¶Î£º°´ÕÕ»æÖƹæÔò½«Ö®Ç°Á½¸ö²½ÖèµÄ²úÎï×éºÏÔÚÒ»Æð¡£

×îºóµÄ¹âÕ¤»¯ÓÉ Engine ²ãÀ´Íê³É¡£

ÔÚäÖȾ½×¶Î£¬¿Ø¼þÊ÷£¨widget£©»áת»»³É¶ÔÓ¦µÄäÖȾ¶ÔÏó£¨RenderObject£©Ê÷£¬ÔÚ Rendering ²ã½øÐв¼¾ÖºÍ»æÖÆ¡£

ÔÚ²¼¾Öʱ Flutter Éî¶ÈÓÅÏȱéÀúäÖȾ¶ÔÏóÊ÷¡£Êý¾ÝÁ÷µÄ´«µÝ·½Ê½ÊÇ´ÓÉϵ½Ï´«µÝÔ¼Êø£¬´Óϵ½ÉÏ´«µÝ´óС¡£Ò²¾ÍÊÇ˵£¬¸¸½Úµã»á½«×Ô¼ºµÄÔ¼Êø´«µÝ¸ø×ӽڵ㣬×Ó½Úµã¸ù¾Ý½ÓÊÕµ½µÄÔ¼ÊøÀ´¼ÆËã×Ô¼ºµÄ´óС£¬È»ºó½«×Ô¼ºµÄ³ß´ç·µ»Ø¸ø¸¸½Úµã¡£Õû¸ö¹ý³ÌÖУ¬Î»ÖÃÐÅÏ¢Óɸ¸½ÚµãÀ´¿ØÖÆ£¬×ӽڵ㲢²»¹ØÐÄ×Ô¼ºËùÔÚµÄλÖ㬶ø¸¸½ÚµãÒ²²»¹ØÐÄ×Ó½Úµã¾ßÌ峤ʲôÑù×Ó¡£

ΪÁË·ÀÖ¹Òò×ӽڵ㷢Éú±ä»¯¶øµ¼ÖµÄÕû¸ö¿Ø¼þÊ÷ÖØ»æ£¬Flutter ¼ÓÈëÁËÒ»¸ö»úÖÆ¡ª¡ªRelayout Boundary£¬ÔÚÒ»Ð©ÌØ¶¨µÄÇéÐÎÏÂRelayout Boundary»á±»×Ô¶¯´´½¨£¬²»ÐèÒª¿ª·¢ÕßÊÖ¶¯Ìí¼Ó¡£

ÀýÈ磬¿Ø¼þ±»ÉèÖÃÁ˹̶¨´óС£¨tight constraint£©¡¢¿Ø¼þºöÂÔËùÓÐ×ÓÊÓͼ³ß´ç¶Ô×Ô¼ºµÄÓ°Ïì¡¢¿Ø¼þ×Ô¶¯Õ¼Âú¸¸¿Ø¼þËùÌṩµÄ¿Õ¼äµÈµÈ¡£ºÜºÃÀí½â£¬¾ÍÊǿؼþ´óС²»»áÓ°ÏìÆäËû¿Ø¼þʱ£¬¾Íû±ØÒªÖØÐ²¼¾ÖÕû¸ö¿Ø¼þÊ÷¡£ÓÐÁËÕâ¸ö»úÖÆºó£¬ÎÞÂÛ×ÓÊ÷·¢ÉúʲôÑùµÄ±ä»¯£¬´¦Àí·¶Î§¶¼Ö»ÔÚ×ÓÊ÷ÉÏ¡£

ÔÚÈ·¶¨Ã¿¸ö¿Õ¼äµÄλÖúʹóС֮ºó£¬¾Í½øÈë»æÖÆ½×¶Î¡£»æÖƽڵãµÄʱºòÒ²ÊÇÉî¶È±éÀú»æÖƽڵãÊ÷£¬È»ºó°Ñ²»Í¬µÄ RenderObject »æÖƵ½²»Í¬µÄͼ²ãÉÏ¡£

ÕâʱÓпÉÄܳöÏÖÒ»ÖÖÌØÊâÇé¿ö£¬ÈçÏÂͼËùʾ½Úµã 2 ÔÚ»æÖÆ×Ó½Úµã 4 ʱ£¬ÓÉÓÚÆä½Úµã4ÐèÒªµ¥¶À»æÖƵ½Ò»¸öͼ²ãÉÏ£¨Èç video£©£¬Òò´ËÂÌɫͼ²ãÉÏÃæ¶àÁ˸ö»ÆÉ«µÄͼ²ã¡£Ö®ºóÔÙÐèÒª»æÖÆÆäËûÄÚÈÝ£¨±ê¼Ç 5£©¾ÍÐèÒªÔÙÔö¼ÓÒ»¸öͼ²ã£¨ºìÉ«£©¡£ÔÙ½ÓÏÂÀ´Òª»æÖƽڵã 1 µÄÓÒ×ÓÊ÷£¨±ê¼Ç 6£©£¬Ò²»á±»»æÖƵ½ºìɫͼ²ãÉÏ¡£ËùÒÔÈç¹û 2 ºÅ½Úµã·¢Éú¸Ä±ä¾Í»á¸Ä±äºìɫͼ²ãÉϵÄÄÚÈÝ£¬Òò´ËÒ²Ó°Ïìµ½Á˺Á²»Ïà¸ÉµÄ 6 ºÅ½Úµã¡£

ΪÁ˱ÜÃâÕâÖÖÇé¿ö£¬Flutter µÄÉè¼ÆÕßÕâÀï»ùÓÚ Relayout Boundary µÄ˼ÏëÔö¼ÓÁË Repaint Boundary¡£ÔÚ»æÖÆÒ³ÃæÊ±ºòÈç¹ûÓö¼û Repaint Boundary ¾Í»áÇ¿ÖÆÇл»Í¼²ã¡£

ÈçÏÂͼËùʾ£¬ÔÚ´ÓÉϵ½Ï±éÀú¿Ø¼þÊ÷Óöµ½ Repaint Boundary »áÖØÐ»æÖƵ½ÐµÄͼ²ã£¨ÉîÀ¶É«£©£¬ÔÚ´Óϵ½ÉÏ·µ»ØµÄʱºòÓÖÓöµ½ Repaint Boundary£¬ÓÚÊÇÓÖÔö¼ÓÒ»¸öеÄͼ²ã£¨Ç³À¶É«£©¡£

ÕâÑù£¬¼´Ê¹·¢ÉúÖØ»æÒ²²»»á¶ÔÆäËû×ÓÊ÷²úÉúÓ°Ïì¡£±ÈÈçÔÚ Scrollview ÉÏ£¬µ±¹ö¶¯µÄʱºò·¢ÉúÄÚÈÝÖØ»æ£¬Èç¹ûÔÚ Scrollview ÒÔÍâµÄµØ·½²»ÐèÒªÖØ»æ¾Í¿ÉÒÔʹÓà Repaint Boundary¡£Repaint Boundary ²¢²»»áÏñ Relayout Boundary Ò»Ñù×Ô¶¯Éú³É£¬¶øÊÇÐèÒªÎÒÃÇ×Ô¼ºÀ´¼ÓÈëµ½¿Ø¼þÊ÷ÖС£

6.¡¾Widget¡¿¿Ø¼þ²ã¡£ËùÓпؼþµÄ»ùÀà¶¼ÊÇ Widget£¬Widget µÄÊý¾Ý¶¼ÊÇÖ»¶ÁµÄ, ²»Äܸı䡣ËùÒÔÿ´ÎÐèÒª¸üÐÂÒ³ÃæÊ±¶¼ÐèÒªÖØÐ´´½¨Ò»¸öеĿؼþÊ÷¡£Ã¿Ò»¸ö Widget »áͨ¹ýÒ»¸ö RenderObjectElement ¶ÔÓ¦µ½Ò»¸öäÖȾ½Úµã£¨RenderObject£©£¬¿ÉÒÔ¼òµ¥Àí½âΪ Widget ÖÐÖ»´æ´¢ÁËÒ³ÃæÔªËØµÄÐÅÏ¢£¬¶øÕæÕý¸ºÔð²¼¾Ö¡¢äÖȾµÄÊÇ RenderObject¡£

ÔÚÒ³Ãæ¸üÐÂÖØÐÂÉú³É¿Ø¼þÊ÷ʱ£¬RenderObjectElement Ê÷»á¾¡Á¿±£³ÖÖØÓá£ÓÉÓÚ RenderObjectElement ³ÖÓжÔÓ¦µÄ RenderObject£¬ËùÓÐ RenderObject Ê÷Ò²»á¾¡¿ÉÄܵı»ÖØÓá£ÈçͼËùʾ¾ÍÊÇÈý¿ÃÊ÷Ö®¼äµÄ¹ØÏµ¡£ÔÚÕâÕÅͼÀïÎÒÃǰÑÐÎ×´µ±×öäÖȾ½ÚµãµÄÀàÐÍ£¬ÑÕÉ«ÊÇËüµÄÊôÐÔ£¬¼´ÐÎ×´²»Í¬¾ÍÊDz»Í¬µÄäÖȾ½Úµã£¬¶øÑÕÉ«²»Í¬Ö»ÊÇͬһ¶ÔÏóµÄÊôÐԵIJ»Í¬¡£

Èç¹ûÏë°Ñ·½ÐεÄÑÕÉ«»»³É»ÆÉ«£¬½«Ô²ÐεÄÑÕÉ«±ä³ÉºìÉ«£¬ÓÉÓڿؼþÊDz»Äܱ»Ð޸ĵģ¬ÐèÒªÖØÐÂÉú³ÉÁ½¸öеĿؼþ Rectangle yellow ºÍ Circle red¡£ÓÉÓÚÖ»ÊÇÐÞ¸ÄÁËÑÕÉ«ÊôÐÔ£¬ËùÒÔ Element ºÍ RenderObject ¶¼±»ÖØÓ㬶øÖ®Ç°µÄ¿Ø¼þÊ÷»á±»ÊÍ·Å»ØÊÕ¡£

ÄÇôÈç¹û°ÑºìɫԲÐαä³ÉÈý½ÇÐÎÓÖ»áÔõÑùÄØ£¿ÓÉÓÚÕâÀï·¢Éú±ä»¯µÄÊÇÀàÐÍ£¬ËùÒÔ¶ÔÓ¦µÄ Element ½ÚµãºÍ RenderObject ½Úµã¶¼ÐèÒªÖØÐ´´½¨¡£µ«ÊÇÓÉÓÚ»ÆÉ«·½ÐÎûÓз¢Éú¸Ä±ä£¬ËùÒÔÆä¶ÔÓ¦µÄ Element ½ÚµãºÍ RenderObject ½ÚµãûÓз¢Éú±ä»¯¡£

×îºóÊÇ¡¾Material¡¿ & ¡¾Cupertino¡¿£¬ÕâÊÇÔÚ Widget ²ãÖ®ÉÏ¿ò¼ÜΪ¿ª·¢ÕßÌṩµÄ»ùÓÚÁ½Ì×Éè¼ÆÓïÑÔʵÏÖµÄ UI ¿Ø¼þ£¬¿ÉÒÔ°ïÖúÎÒÃÇµÄ App ÔÚ²»Í¬Æ½Ì¨ÉÏÌṩ½Ó½üÔ­ÉúµÄÓû§ÌåÑé¡£

Flutter ÔÚÂí·äÎÑÉ̼ҶËApp ÖеÄÓ¦ÓÃʵ¼ù

¿ª·¢·½Ê½£ºFlutter + Native

ÓÉÓÚÉ̼ҶËÒѾ­ÊÇÒ»¿î³ÉÊìµÄ App£¬²»¿ÉÄÜ´´½¨Ò»¸öÐ嵀 Flutter ¹¤³ÌÈ«²¿ÖØÐ¿ª·¢£¬Òò´ËÎÒÃÇÑ¡Ôñ Native Óë Flutter »ì±àµÄ·½°¸À´ÊµÏÖ¡£

ÔÚÁ˽â Native Óë Flutter »ì±à·½°¸Ç°£¬Ê×ÏÈÎÒÃÇÐèÒªÁ˽âÔÚ Flutter ¹¤³ÌÖУ¬Í¨³£ÓÐÒÔÏ 4 ÖÖ¹¤³ÌÀàÐÍ£º

Flutter Application

±ê×¼µÄ Flutter App ¹¤³Ì£¬°üº¬±ê×¼µÄ Dart ²ãÓë Native ƽ̨²ã¡£

Flutter Module

Flutter ×é¼þ¹¤³Ì£¬½ö°üº¬ Dart ²ãʵÏÖ£¬Native ƽ̨²ã×Ó¹¤³ÌΪͨ¹ý Flutter ×Ô¶¯Éú³ÉµÄÒþ²Ø¹¤³Ì£¨.ios / .android£©¡£

Flutter Plugin

Flutter ƽ̨²å¼þ¹¤³Ì£¬°üº¬ Dart ²ãÓë Native ƽ̨²ãµÄʵÏÖ¡£

Flutter Package

Flutter ´¿ Dart ²å¼þ¹¤³Ì£¬½ö°üº¬ Dart ²ãµÄʵÏÖ£¬ÍùÍù¶¨ÒåһЩ¹«¹² Widget¡£

Á˽âÁË Flutter ¹¤³ÌÀàÐͺó£¬ÎÒÃÇÀ´¿´Ï¹ٷ½ÌṩµÄÒ»ÖÖ»ì±à·½°¸£¨https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps£©£¬¼´ÔÚÏÖÓй¤³ÌÏ´´½¨ Flutter Module ¹¤³Ì£¬ÒÔ±¾µØÒÀÀµµÄ·½Ê½¼¯³Éµ½ÏÖÓÐµÄ Native ¹¤³ÌÖС£

¹Ù·½¼¯³É·½°¸£¨ÒÔ iOS ΪÀý£©

a. ÔÚ¹¤³ÌĿ¼´´½¨ FlutterModule£¬´´½¨ºó£¬¹¤³ÌĿ¼´óÖÂÈçÏ£º

b. ÔÚ Podfile ÎļþÖÐÌí¼ÓÒÔÏ´úÂ룺

flutter_application_path = '../flutter_Moudule/'

eval(File.read (File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')), binding)

¸Ã½Å±¾Ö÷Òª¸ºÔð£º

pod ÒýÈë Flutter.Framework ÒÔ¼° FlutterPluginRegistrant ×¢²áÈë¿Ú

pod ÒýÈë Flutter µÚÈý·½ plugin

ÔÚÿһ¸ö pod ¿âµÄÅäÖÃÎļþÖÐдÈë¶Ô Generated.xcconfig ÎļþµÄµ¼Èë

ÐÞ¸Ä pod ¿âµÄ ENABLE_BITCODE = NO£¨ÒòΪ Flutter ÏÖÔÚ²»Ö§³Ö bitcode£©

c. ÔÚ iOS ¹¹½¨½×¶Î Build Phases ÖÐ×¢Èë¹¹½¨Ê±ÐèÒªÖ´ÐÐµÄ xcode_backend.sh (λÓÚ FlutterSDK/packages/flutter_tools/bin) ½Å±¾:

"$FLUTTER_ROOT/packages/flutter_tools/ bin/xcode_backend.sh" build

"$FLUTTER_ROOT/packages/flutter_tools/ bin/xcode_backend.sh" embed

¸Ã½Å±¾Ö÷Òª¸ºÔð£º

¹¹½¨ App.framework ÒÔ¼° Flutter.framework ²úÎï

¸ù¾Ý±àÒëģʽ£¨debug/profile/release£©µ¼Èë¶ÔÓ¦µÄ²úÎï

±àÒë flutter_asset ×ÊÔ´

°ÑÒÔÉϲúÎï copy µ½¶ÔÓ¦µÄ¹¹½¨²úÎïÖÐ

d. Óë Native ͨÐÅ

·½°¸Ò»£º¸ÄÔì AppDelegate ¼Ì³Ð×Ô FlutterAppDelegate

·½°¸¶þ£ºAppDelegate ʵÏÖ FlutterAppLifeCycleProvider ЭÒ飬ÉúÃüÖÜÆÚÓÉ FlutterPluginAppLifeCycleDelegate ´«µÝ¸ø Flutter

ÒÔÉϾÍÊǹٷ½ÌṩµÄ¼¯³É·½°¸¡£ÎÒÃÇ×îÖÕûÓÐÑ¡Ôñ´Ë·½°¸µÄÔ­Òò£¬ÊÇËüÖ±½ÓÒÀÀµÓÚ FlutterModule ¹¤³ÌÒÔ¼° Flutter »·¾³£¬Ê¹ Native ¿ª·¢Í¬Ñ§ÎÞ·¨ÍÑÀë Flutter »·¾³¿ª·¢£¬Ó°ÏìÕý³£µÄ¿ª·¢Á÷³Ì£¬ÍŶӺÏ×÷³É±¾½Ï´ó£»¶øÇÒ»áÓ°ÏìÕý³£µÄ´ò°üÁ÷³Ì¡££¨Ä¿Ç° Flutter ÍŶÓÕýÔÚÖØ¹¹Ç¶Èë Native ¹¤³ÌµÄ·½Ê½£©

×îÖÕÎÒÃÇÑ¡ÔñÁíÒ»ÖÖ·½°¸À´½â¾öÒÔÉϵÄÎÊÌ⣺Զ¶ËÒÀÀµ²úÎï¡£

iOS ¼¯³É·½°¸

ͨ¹ý¶Ô¹Ù·½»ì±à·½°¸µÄÑо¿£¬ÎÒÃÇÁ˽⵽ iOS ¹¤³Ì×îÖÕÒÀÀµµÄÆäʵÊÇ FlutterModule ¹¤³Ì¹¹½¨³öµÄ²úÎFramework£¬Asset£¬Plugin£©£¬Ö»Ð轫²úÎïµ¼³ö²¢ push µ½Ô¶¶Ë²Ö¿â£¬iOS ¹¤³Ìͨ¹ýÔ¶¶ËÒÀÀµ²úÎï¼´¿É¡£

ÒÀÀµ²úÎïĿ¼½á¹¹ÈçÏ£º

App.framework : Flutter ¹¤³Ì²úÎ°üº¬ Flutter ¹¤³ÌµÄ´úÂ룬Debug ģʽÏÂËüÊǸö¿Õ¿Ç£¬´úÂëÔÚ flutter_assets ÖУ©¡£

Flutter.framework: Flutter ÒýÇæ¿â¡£Óë±àÒëģʽ£¨debug/profile/release£©ÒÔ¼° CPU ¼Ü¹¹£¨arm*, i386, x86_64£©ÏàÆ¥Åä¡£

lib*.a & .h Í·Îļþ : FlutterPlugin ¾²Ì¬¿â£¨°üº¬ÔÚ iOS ¶ËµÄʵÏÖ£©¡£

flutter_assets: °üº¬ Flutter ¹¤³Ì×ÖÌ壬ͼƬµÈ×ÊÔ´¡£ÔÚ Flutter1.2 °æ±¾ÖУ¬±»´ò°üµ½ App.framework ÖС£

Android ¼¯³É·½°¸

Android Nativite ¼¯³ÉÊÇͨ¹ý Gradle Ô¶³ÌÒÀÀµ Flutter ¹¤³Ì²úÎïµÄ·½Ê½Íê³ÉµÄ£¬ÒÔÏÂÊǾßÌåµÄ¼¯³ÉÁ÷³Ì¡£

a. ´´½¨ Flutter ±ê×¼¹¤³Ì

$ flutter create flutter_demo

ĬÈÏʹÓà Java ´úÂ룬Èç¹ûÔö¼Ó Kotlin Ö§³Ö£¬Ê¹ÓÃÈçÏÂÃüÁ

$ flutter create -a kotlin flutter_demo

b. Ð޸Ť³ÌµÄĬÈÏÅäÖÃ

i. ÐÞ¸Ä app module ¹¤³ÌµÄ build.gradle ÅäÖà apply plugin: ¡®com.android.application¡¯ => apply plugin: ¡®com.android.library¡¯£¬²¢ÒƳý applicationId ÅäÖÃ

ii. ÐÞ¸Ä root ¹¤³ÌµÄ build.gradle ÅäÖÃ

ÔÚ¼¯³É¹ý³ÌÖÐ Flutter ÒÀÀµÁËÈý·½ Plugins ºó£¬Óöµ½ Plugins µÄ´úÂëûÓб»´ò½ø Library ÖеÄÎÊÌ⡣ͨ¹ýÒÔÏÂÅäÖýâ¾ö£¨ÕâÖÖ·½Ê½ÂÔÏÔ´Ö±©£¬ºóÐøµÄÓÅ»¯·½°¸ÕýÔÚµ÷ÑУ©¡£

subprojects {

project.buildDir = "${rootProject.buildDir}/app"

iii. app module Ôö¼Ó maven ´ò°üÅäÖÃ

c. Éú³É Android Flutter ²úÎï

$ cd android

$ ./gradlew uploadArchives

¹Ù·½Ä¬ÈϵĹ¹½¨½Å±¾ÔÚ Flutter 1.0.0 °æ±¾´æÔÚ Bug¡ª¡ª×îÖյIJúÎïÖлáȱÉÙ flutter_shared/icudtl.dat Îļþ£¬µ¼Ö App Crash¡£Ä¿Ç°µÄ½â¾ö·½Ê½Êǽ«Õâ¸öÎļþ¸´ÖƵ½¹¤³ÌµÄ assets Ï£¨ ÔÚ Flutter ×îР1.2.1 °æ±¾ÖÐÕâ¸ö Bug Òѱ»ÐÞ¸´£¬µ«ÊÇ 1.2.1 °æ±¾ÓÖ³öÏÖÁËÒ»¸ö UI äÖȾµÄÎÊÌ⣬ËùÒÔÖ»ÄܼÌÐøÊ¹Óà 1.0.0 °æ±¾£©¡£

d. Android Native ƽ̨¹¤³Ì¼¯³É£¬Ôö¼ÓÏÂÃæÒÀÀµÅäÖü´¿É£¬²»»áÓ°Ïì Native ƽ̨¿ª·¢µÄͬѧ

implementation ¡®com.mfw.app: MerchantFlutter:0.0.5-beta¡¯

Flutter ºÍ iOS¡¢Android µÄ½»»¥

ʹÓÃÆ½Ì¨Í¨µÀ£¨Platform Channels£©ÔÚ Flutter ¹¤³ÌºÍËÞÖ÷£¨Native ¹¤³Ì£©Ö®¼ä´«µÝÏûÏ¢£¬Ö÷ÒªÊÇͨ¹ý MethodChannel ½øÐз½·¨µÄµ÷Óã¬ÈçÏÂͼËùʾ£º

ΪÁËÈ·±£Óû§½çÃæ²»»á¹ÒÆð£¬ÏûÏ¢ºÍÏìÓ¦ÊÇÒì²½´«µÝµÄ£¬ÐèÒªÓà async ÐÞÊη½·¨£¬await ÐÞÊε÷ÓÃÓï¾ä¡£Flutter ¹¤³ÌºÍËÞÖ÷¹¤³Ìͨ¹ýÔÚ Channel ¹¹Ô캯ÊýÖд«µÝ Channel Ãû³Æ½øÐйØÁª¡£µ¥¸öÓ¦ÓÃÖÐʹÓõÄËùÓÐ Channel Ãû³Æ±ØÐëÊÇΨһµÄ; ¿ÉÒÔÔÚ Channel Ãû³ÆÇ°¼ÓÒ»¸öΨһµÄ¡¸ÓòÃûǰ׺¡¹¡£

Flutter Óë Native ÐÔÄܶԱÈ

ÎÒÃÇ·Ö±ðʹÓà Native ºÍ Flutter ¿ª·¢ÁËÁ½¸öÁбíÒ³£¬ÒÔÏÂÊÇÒ³ÃæÐ§¹ûºÍÐÔÄܶԱȣº

iOS ¶Ô±È£¨»úÐÍ 6P ϵͳ 10.3.3£©£º

Flutter Ò³Ãæ£º

 

iOS Native Ò³Ãæ£º

¿ÉÒÔ¿´µ½£¬´ÓʹÓúÍÖ±¹Û¸ÐÊܶ¼Ã»ÓÐÌ«´óµÄ²î±ð¡£ÓÚÊÇÎÒÃDzɼ¯ÁËһЩÆäËû·½ÃæµÄÊý¾Ý¡£

Flutter Ò³Ãæ£º

iOS Native Ò³Ãæ£º

ÁíÍâÎÒÃÇ»¹¶Ô±ÈÁËÉ̼Ҷ˽ÓÈë Flutter ǰºó°üÌå»ýµÄ´óС£º39Mb ¡ú 44MB

ÔÚ iOS »úÐÍÉÏ£¬Á÷³©¶ÈÉÏûÓÐʲô²îÒì¡£´ÓÊýÖµÉÏÀ´¿´£¬Flutter ÔÚ ÄÚ´æ¸ú GPU/CPU ʹÓÃÂÊÉϱÈÔ­ÉúÂԸߡ£ Demo Öв¢Ã»ÓÐ¶Ô Flutter ×ö¸ü¶àµÄÓÅ»¯£¬¿ÉÒÔ¿´³ö Flutter ÕûÌåÀ´Ëµ»¹ÊÇ¿ÉÒÔ×ö³ö½Ó½üÓÚÔ­ÉúµÄÒ³Ãæ¡£

ÏÂÃæÊÇ Flutter Óë Android µÄÐÔÄܶԱȡ£

Flutter Ò³Ãæ£º

Android Native Ò³Ãæ£º

´ÓÒÔÉÏÁ½ÕŶԱÈͼ¿ÉÒÔ¿´³ö£¬²»¿¼ÂÇÆäËûÒòËØ£¬µ¥´¿´ÓÐÔÄܽǶÈÀ´Ëµ£¬ Ô­ÉúÒªÓÅÓÚ Flutter£¬µ«ÊDzî¾à²¢²»´ó£¬¶øÇÒ Flutter ¾ßÓÐµÄ¿çÆ½Ì¨¿ª·¢ºÍÈÈÖØÔØµÈÌØµã¼«´óµØ½ÚÊ¡ÁË¿ª·¢Ð§ÂÊ¡£²¢ÇÒ£¬Î´À´µÄÈÈÐÞ¸´ÌØÐÔ¸üÊÇÖµµÃÆÚ´ý¡£

»ìºÏÕ»¹ÜÀí

Ê×ÏÈÏȽéÉÜÏ Flutter ·ÓɵĹÜÀí£º

Flutter ¹ÜÀíÒ³ÃæÓÐÁ½¸ö¸ÅÄRoute ºÍ Navigator¡£

Navigator ÊÇÒ»¸ö·ÓɹÜÀíµÄ Widget£¨Flutter ÖÐÍòÎï½Ô Widget£©£¬Ëüͨ¹ýÒ»¸öÕ»À´¹ÜÀíÒ»¸ö·ÓÉ Widget ¼¯ºÏ¡£Í¨³£µ±Ç°ÆÁÄ»ÏÔʾµÄÒ³Ãæ¾ÍÊÇÕ»¶¥µÄ·ÓÉ¡£

·ÓÉ (Route) ÔÚÒÆ¶¯¿ª·¢ÖÐͨ³£Ö¸Ò³Ã棨Page£©£¬Õâ¸ú web ¿ª·¢Öе¥Ò³Ó¦ÓÃµÄ Route ¸ÅÄîÒâÒåÊÇÏàͬµÄ£¬Route ÔÚ Android ÖÐͨ³£Ö¸Ò»¸ö Activity£¬ÔÚ iOS ÖÐÖ¸Ò»¸ö ViewController¡£Ëùν·ÓɹÜÀí£¬¾ÍÊǹÜÀíÒ³ÃæÖ®¼äÈçºÎÌø×ª£¬Í¨³£Ò²¿É±»³ÆÎªµ¼º½¹ÜÀí¡£ÕâºÍÔ­Éú¿ª·¢ÀàËÆ£¬ÎÞÂÛÊÇ Android »¹ÊÇ iOS£¬µ¼º½¹ÜÀí¶¼»áά»¤Ò»¸ö·ÓÉÕ»£¬Â·ÓÉÈëÕ» (push) ²Ù×÷¶ÔÓ¦´ò¿ªÒ»¸öÐÂÒ³Ãæ£¬Â·ÓɳöÕ» (pop) ²Ù×÷¶ÔÓ¦Ò³Ãæ¹Ø±Õ²Ù×÷£¬¶øÂ·ÓɹÜÀíÖ÷ÒªÊÇÖ¸ÈçºÎÀ´¹ÜÀí·ÓÉÕ»¡£

Èç¹ûÊÇ´¿ Flutter ¹¤³Ì£¬Ò³ÃæÕ»ÎÞÐèÎÒÃǽøÐйÜÀí£¬µ«ÊÇÒýÈëµ½ Native ¹¤³ÌÄÚ£¬¾ÍÐèÒª¿¼ÂÇÈçºÎ¹ÜÀí»ìºÏÕ»¡£²¢ÇÒÐèÒª½â¾öÒÔϼ¸¸öÎÊÌ⣺

±£Ö¤ Flutter Ò³ÃæÓë Native Ò³ÃæÖ®¼äµÄÌø×ª´ÓÓû§ÌåÑéÉÏûÓÐÈκβîÒì

Ò³Ãæ×ÊÔ´»¯£¨Âí·äÎÑÌØÓеÄÒµÎñÂß¼­£©

±£Ö¤ÉúÃüÖÜÆÚÍêÕûÐÔ£¬´¦ÀíÏà¹Ø´òµãʼþÉϱ¨

×ÊÔ´ÐÔÄÜÎÊÌâ

²Î¿¼ÁËÒµ½çÄڵĽâ¾ö·½·¨£¬ÒÔ¼°ÏîÄ¿×ÔÉíµÄʵ¼Ê³¡¾°£¬ÎÒÃÇÑ¡ÔñÀàËÆÓÚ H5 ÔÚ Navite ÖÐǶÈëµÄ·½Ê½£¬Í³Ò»Í¨¹ý openURL Ìø×ªµ½Ò»¸ö Native Ò³Ãæ£¨FlutterContainerVC£©£¬Native Ò³ÃæÍ¨¹ý addChildViewController ·½Ê½Ìí¼Ó FlutterViewController£¨¸ºÔð Flutter Ò³ÃæäÖȾ£©£¬Í¬Ê±Í¨¹ý channel ͬ²½ Native Ò³ÃæÓë Flutter Ò³Ãæ¡£

ÿһ´ÎµÄ push/pop ÓÉ Native ·¢Æð£¬Í¬Ê±Í¨¹ý channel ±£³Ö Native Óë Flutter Ò³ÃæÍ¬²½¡ª¡ªÔÚ Native ÖÐÌø×ª Flutter Ò³ÃæÓëÌø×ªÔ­ÉúÎÞ²îÒì

Ò»¸ö Flutter Ò³Ãæ¶ÔÓ¦Ò»¸ö Native Ò³Ãæ£¨FlutterContainerVC) ¡ª¡ª½â¾öÒ³Ãæ×ÊÔ´»¯

FlutterContainerVC ͨ¹ý addChildViewController ¶Ôµ¥Àý FlutterViewController ½øÐи´Ó᪡ª±£Ö¤ÉúÃüÖÜÆÚÍêÕûÐÔ£¬´¦ÀíÏà¹Ø´òµãʼþÉϱ¨

ÓÉÓÚÿһ¸ö FlutterViewController£¨Ìṩ Flutter ÊÓͼµÄʵÏÖ£©»áÆô¶¯Èý¸öỊ̈߳¬·Ö±ðÊÇ UI Ï̡߳¢GPU Ïß³ÌºÍ IO Ị̈߳¬Ê¹Óõ¥Àý FlutterViewController ¿ÉÒÔ¼õÉÙ¶Ô×ÊÔ´µÄÕ¼Ó᪡ª½â¾ö×ÊÔ´ÐÔÄÜÎÊÌâ

Flutter Ó¦ÓÃ×ܽá

Flutter Ò»¾­·¢²¼¾ÍºÜÊܹØ×¢£¬³ýÁË iOS ºÍ Android µÄ¿ª·¢Õߣ¬ºÜ¶àǰ¶Ë¹¤³ÌʦҲ¶¼·Ç³£¿´ºÃ Flutter δÀ´µÄ·¢Õ¹Ç°¾°¡£ÏàÐÅÒ²Óкܶ๫˾µÄÍŶÓÒѾ­Í¶Èëµ½Ñо¿ºÍʵ¼ùÖÐÁË¡£²»¹ý Flutter Ò²Óкܶ಻×ãµÄµØ·½£¬ÖµµÃÎÒÃÇ×¢Ò⣺

ËäÈ» 1.2 °æ±¾ÒѾ­·¢²¼£¬µ«ÊÇĿǰûÓдﵽÍêÈ«Îȶ¨×´Ì¬£¬1.2 ·¢²¼ÍêÁ˾ͳöÏÖÁ˿ؼþäÖȾµÄÎÊÌâ¡£¼ÓÉÏ Dart ÓïÑÔÉú̬С£¬Ñ§Ï°×ÊÁÏ¿ÉÄܲ»¹»·á¸»¡£

¹ØÓÚ¶¯Ì¬»¯µÄÖ§³Ö£¬Ä¿Ç° Flutter »¹²»Ö§³ÖÏßÉ϶¯Ì¬ÐÔ¡£Èç¹ûÒªÔÚ Android ÉÏʵÏÖ¶¯Ì¬ÐÔÏà¶ÔÈÝÒ×Щ£¬iOS ÓÉÓÚÉóºËÔ­ÒòҪʵÏÖ¶¯Ì¬ÐÔ¿ÉÄܳɱ¾ºÜ¸ß¡£

Flutter ÖÐĿǰÄÃÀ´¾ÍÓõÄÄÜÁ¦Ö»ÓÐ UI ¿Ø¼þºÍ Dart ±¾ÉíÌṩÄÜÁ¦£¬¶ÔÓÚÆ½Ì¨¼¶±ðµÄÄÜÁ¦»¹ÐèҪͨ¹ý channel µÄ·½Ê½À´À©Õ¹¡£

ÒÑÓй¤³ÌÇ¨ÒÆ±È½Ï¸´ÔÓ£¬ÒÔǰ³ÁµíµÄ UI ¿Ø¼þ£¬ÐèÒªÖØÐÂÔÙʵÏÖÒ»Ìס£

×îºóÒ»µã±È½ÏÓÐÕùÒ飬Flutter ²»»á´Ó³ÌÐòÖвð·Ö³ö¶îÍâµÄÄ£°å»ò²¼¾ÖÓïÑÔ£¬Èç JSX »ò XM L£¬Ò²²»ÐèÒªµ¥¶ÀµÄ¿ÉÊÓ²¼¾Ö¹¤¾ß¡£ÓеÄÈËÈÏΪÅäºÏ HotReload ¹¦ÄÜʹÓ÷dz£·½±ã£¬µ«ÎÒÃÇ·¢ÏÖÕâÑù´úÂë»áÓзdz£¶àµÄǶÌ×£¬ÔĶÁÆðÀ´ÓÐЩ³ÔÁ¦¡£

Ŀǰ°¢ÀïµÄÏÐÓ㿪·¢ÍŶÓÒѾ­½« Flutter ÓÃÓÚ´óÐÍʵ¼ù£¬²¢Ó¦ÓÃÔÚÁ˱ȽÏÖØÒªµÄ³¡¾°£¨Èç²úÆ·ÏêÇéÒ³£©£¬ÎªºóÀ´ÕßÌṩÁËÁ¼ºÃµÄ½è¼ø¡£Âí·äÎѵÄÒÆ¶¯¿Í»§¶ËÍŶӹØÓÚ Flutter µÄ̽Ë÷²Å¸Õ¸ÕÆð²½£¬Ç°Ã滹ÓкܶàµÄÎÊÌâÐèÒªÎÒÃÇÒ»µãÒ»µãÈ¥½â¾ö¡£²»¹ýÎÞÂÛ´Ó Google ¶ÔÆäµÄÖØÊӳ̶ȣ¬»¹ÊÇÎÒÃÇ´Óʵ¼ùÖп´µ½µÄÕâЩÓŵ㣬¶¼ÈÃÎÒÃÇ¶Ô Flutter ³äÂúÐÅÐÄ£¬Ò²Ï£ÍûÔÚδÀ´ÎÒÃÇ¿ÉÒÔÀûÓÃËü´´Ôì¸ü¶àµÄ¼ÛÖµºÍÆæ¼£¡£

·;ËäÔ¶£¬ÓÌ¿ÉÆÚÐí¡£

 

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

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

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

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
Flutter-Ä㻹ÔÚÀÄÓÃStatefulWidgetÂð
ÒÆ¶¯APP°²È«²âÊÔÒªµã
ÉîÈëdz³ö Kotlin Э³Ì
iOS ×é¼þ»¯ ¡ª¡ª ·ÓÉÉè¼ÆË¼Â··ÖÎö
ÒÆ¶¯¶Ë¿çƽ̨¿ª·¢µÄÉî¶È½âÎö
×îпγÌ
Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò¿ª·¢
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
AndroidÓ¦Óø߼¶¿ª·¢
ÒÆ¶¯»¥ÁªÍøÓ¦Óÿª·¢£¨iOS£¬Android£¬HTML5)
³É¹¦°¸Àý
±±¾© iOS¿ª·¢¼¼ÊõÉîÈëÑо¿
ijÆóÒµ Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò¿ª·¢
ÖÐÌå²Ê Android²úÆ·¼¶²âÊÔ
ÒÆ¶¯Í¨ÐÅ ÒÆ¶¯»¥ÁªÍøÓ¦Óÿª·¢Ô­Àí
ijµçÁ¦ÐÐ android¿ª·¢Æ½Ì¨×î¼Ñ