{"id":414,"date":"2025-03-30T17:34:02","date_gmt":"2025-03-30T09:34:02","guid":{"rendered":"http:\/\/blog.yfstudio.online\/?p=414"},"modified":"2025-03-30T18:35:26","modified_gmt":"2025-03-30T10:35:26","slug":"dart-flutter-%e9%a1%b9%e7%9b%ae%e7%bb%93%e6%9e%84%e8%a7%a3%e6%9e%90","status":"publish","type":"post","link":"http:\/\/blog.yfstudio.online\/?p=414","title":{"rendered":"Dart &#038; Flutter \u9879\u76ee\u7ed3\u6784"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n<html><body><h2>&#26680;&#24515;&#27010;&#24565;<\/h2>\n<h3>Package&#65288;&#21253;&#65289;<\/h3>\n<ul>\n<li><strong>&#23450;&#20041;<\/strong>&#65306;Dart &#30340;&#22522;&#26412;&#20195;&#30721;&#32452;&#32455;&#21333;&#20803;&#65292;&#36890;&#36807; <code>pubspec.yaml<\/code> &#23450;&#20041;&#20803;&#25968;&#25454;&#21644;&#20381;&#36182;&#20851;&#31995;&#65292;&#25903;&#25345;&#27169;&#22359;&#21270;&#24320;&#21457;&#12290;&#19968;&#20010;&#21253;&#21487;&#21253;&#21547;&#22810;&#20010;&#24211;&#65288;library&#65289;&#12290;<\/li>\n<li><strong>&#31867;&#22411;<\/strong>&#65306;\n<ul>\n<li><strong>&#24212;&#29992;&#21253;<\/strong>&#65306;&#21253;&#21547;&#21487;&#25191;&#34892;&#20837;&#21475;&#65288;<code>main.dart<\/code>&#65289;&#65292;&#22914; Flutter &#24212;&#29992;&#12290;<\/li>\n<li><strong>&#24211;&#21253;<\/strong>&#65306;&#25552;&#20379;&#21487;&#22797;&#29992;&#30340;&#21151;&#33021;&#27169;&#22359;&#65292;&#36890;&#36807; <code>export<\/code> &#26292;&#38706; API&#12290;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Library&#65288;&#24211;&#65289;<\/h3>\n<ul>\n<li><strong>&#20316;&#29992;<\/strong>&#65306;&#36890;&#36807; <code>library<\/code> &#20851;&#38190;&#23383;&#22768;&#26126;&#65292;&#23454;&#29616;&#20195;&#30721;&#36923;&#36753;&#23553;&#35013;&#12290;&#20351;&#29992; <code>import<\/code> &#23548;&#20837;&#20854;&#20182;&#24211;&#65292;&#25903;&#25345;&#21035;&#21517;&#21644;&#26465;&#20214;&#23548;&#20837;&#12290;<\/li>\n<li><strong>&#35775;&#38382;&#25511;&#21046;<\/strong>&#65306;&#20197;&#19979;&#21010;&#32447;&#24320;&#22836;&#30340;&#25104;&#21592;&#20026;&#31169;&#26377;&#65292;&#20165;&#24211;&#20869;&#21487;&#35265;&#12290;<\/li>\n<\/ul>\n<h3>Flutter &#20998;&#23618;&#26550;&#26500;<\/h3>\n<ul>\n<li><strong>UI&#23618;<\/strong>&#65306;Widget &#26641;&#26500;&#24314;&#19982;&#28210;&#26579;&#65292;&#20851;&#27880;&#23637;&#31034;&#36923;&#36753;&#12290;<\/li>\n<li><strong>&#19994;&#21153;&#36923;&#36753;&#23618;<\/strong>&#65306;&#29366;&#24577;&#31649;&#29702;&#65288;&#22914; Provider\/BLoC&#65289;&#65292;&#22788;&#29702;&#25968;&#25454;&#36716;&#25442;&#12290;<\/li>\n<li><strong>&#25968;&#25454;&#23618;<\/strong>&#65306;API &#35831;&#27714;&#12289;&#26412;&#22320;&#23384;&#20648;&#12289;&#27169;&#22411;&#26144;&#23556;&#12290;<\/li>\n<\/ul>\n<h2>&#30446;&#24405;&#32467;&#26500;<\/h2>\n<h3>&#26631;&#20934;&#24067;&#23616;&#65288;&#20013;&#22411;&#39033;&#30446;&#65289;<\/h3>\n<pre><code>flutter_project\/\n&#9500;&#9472;&#9472; android\/                # Android &#24179;&#21488;&#20195;&#30721;\n&#9500;&#9472;&#9472; ios\/                    # iOS &#24179;&#21488;&#20195;&#30721;\n&#9500;&#9472;&#9472; lib\/                    # &#26680;&#24515;&#20195;&#30721;\n&#9474;   &#9500;&#9472;&#9472; main.dart           # &#24212;&#29992;&#20837;&#21475;\n&#9474;   &#9500;&#9472;&#9472; app\/                # &#20840;&#23616;&#37197;&#32622;&#65288;&#20027;&#39064;&#12289;&#36335;&#30001;&#31561;&#65289;\n&#9474;   &#9500;&#9472;&#9472; features\/           # &#21151;&#33021;&#27169;&#22359;&#65288;DDD &#39118;&#26684;&#65289;\n&#9474;   &#9474;   &#9492;&#9472;&#9472; auth\/           # &#31034;&#20363;&#27169;&#22359;\n&#9474;   &#9474;       &#9500;&#9472;&#9472; data\/       # &#25968;&#25454;&#23618;&#65288;API&#12289;&#26412;&#22320;&#23384;&#20648;&#65289;\n&#9474;   &#9474;       &#9500;&#9472;&#9472; domain\/     # &#19994;&#21153;&#36923;&#36753;&#65288;&#23454;&#20307;&#12289;UseCase&#65289;\n&#9474;   &#9474;       &#9492;&#9472;&#9472; presentation\/ # UI&#23618;&#65288;&#39029;&#38754;&#12289;&#32452;&#20214;&#65289;\n&#9474;   &#9500;&#9472;&#9472; core\/               # &#22522;&#30784;&#26381;&#21153;\n&#9474;   &#9474;   &#9500;&#9472;&#9472; network\/        # &#32593;&#32476;&#23553;&#35013;\n&#9474;   &#9474;   &#9500;&#9472;&#9472; di\/             # &#20381;&#36182;&#27880;&#20837;\n&#9474;   &#9474;   &#9492;&#9472;&#9472; utils\/          # &#36890;&#29992;&#24037;&#20855;\n&#9474;   &#9500;&#9472;&#9472; shared\/             # &#36328;&#27169;&#22359;&#20849;&#20139;&#32452;&#20214;\n&#9474;   &#9492;&#9472;&#9472; generated\/          # &#33258;&#21160;&#29983;&#25104;&#20195;&#30721;&#65288;&#22914;&#36335;&#30001;&#65289;\n&#9500;&#9472;&#9472; test\/                   # &#21333;&#20803;&#27979;&#35797;\n&#9500;&#9472;&#9472; integration_test\/       # &#38598;&#25104;&#27979;&#35797;\n&#9500;&#9472;&#9472; assets\/                 # &#38745;&#24577;&#36164;&#28304;\n&#9474;   &#9500;&#9472;&#9472; images\/             # &#22270;&#29255;&#65288;&#25903;&#25345;&#22810;&#20998;&#36776;&#29575;&#65289;\n&#9474;   &#9492;&#9472;&#9472; fonts\/              # &#23383;&#20307;&#25991;&#20214;\n&#9492;&#9472;&#9472; pubspec.yaml            # &#20381;&#36182;&#31649;&#29702;<\/code><\/pre>\n<h3>&#20851;&#38190;&#30446;&#24405;&#35828;&#26126;<\/h3>\n<ul>\n<li><strong><code>features\/<\/code><\/strong>&#65306;&#25353;&#21151;&#33021;&#27169;&#22359;&#21010;&#20998;&#65292;&#36981;&#24490;&#12300;&#21151;&#33021;&#20999;&#29255;&#12301;&#21407;&#21017;&#65292;&#27599;&#20010;&#27169;&#22359;&#29420;&#31435;&#23454;&#29616;&#25968;&#25454;-&#36923;&#36753;-UI &#38381;&#29615;&#12290;<\/li>\n<li><strong><code>core\/<\/code><\/strong>&#65306;&#22522;&#30784;&#35774;&#26045;&#23618;&#65292;&#21253;&#21547;&#32593;&#32476;&#35831;&#27714;&#12289;&#26085;&#24535;&#31995;&#32479;&#31561;&#36328;&#27169;&#22359;&#26381;&#21153;&#12290;<\/li>\n<li><strong><code>shared\/<\/code><\/strong>&#65306;&#21487;&#22797;&#29992;&#30340;&#22522;&#30784;&#32452;&#20214;&#65288;&#25353;&#38062;&#12289;&#23545;&#35805;&#26694;&#65289;&#25110;&#24037;&#20855;&#31867;&#12290;<\/li>\n<li><strong><code>generated\/<\/code><\/strong>&#65306;&#33258;&#21160;&#29983;&#25104;&#25991;&#20214;&#65288;&#22914; <code>freezed<\/code> &#27169;&#22411;&#12289;<code>go_router<\/code> &#36335;&#30001;&#65289;&#12290;<\/li>\n<\/ul>\n<h2>&#27169;&#22359;&#21270;&#19982;&#26550;&#26500;&#27169;&#24335;<\/h2>\n<h3>&#29366;&#24577;&#31649;&#29702;&#26041;&#26696;<\/h3>\n<table>\n<thead>\n<tr>\n<th>&#26041;&#26696;<\/th>\n<th>&#36866;&#29992;&#22330;&#26223;<\/th>\n<th>&#29305;&#28857;<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Provider<\/td>\n<td>&#31616;&#21333;&#29366;&#24577;&#20256;&#36882;<\/td>\n<td>&#36731;&#37327;&#32423;&#65292;&#22522;&#20110; InheritedWidget<\/td>\n<\/tr>\n<tr>\n<td>BLoC<\/td>\n<td>&#22797;&#26434;&#19994;&#21153;&#36923;&#36753;<\/td>\n<td>&#20107;&#20214;&#39537;&#21160;&#65292;&#25903;&#25345;&#24322;&#27493;&#27969;&#22788;&#29702;<\/td>\n<\/tr>\n<tr>\n<td>Riverpod<\/td>\n<td>&#29616;&#20195;&#21270;&#26367;&#20195;&#26041;&#26696;<\/td>\n<td>&#25903;&#25345;&#20840;&#23616;\/&#23616;&#37096;&#29366;&#24577;&#65292;&#20381;&#36182;&#27880;&#20837;&#21451;&#22909;<\/td>\n<\/tr>\n<tr>\n<td>GetX<\/td>\n<td>&#24555;&#36895;&#24320;&#21457;<\/td>\n<td>&#38598;&#25104;&#36335;&#30001;&#12289;&#20381;&#36182;&#31649;&#29702;&#65292;&#20294;&#32806;&#21512;&#24230;&#39640;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>&#36335;&#30001;&#31649;&#29702;<\/h3>\n<ul>\n<li>\n<p><strong>&#22768;&#26126;&#24335;&#36335;&#30001;<\/strong>&#65306;&#20351;&#29992; <code>go_router<\/code> &#25110; <code>auto_route<\/code> &#23450;&#20041;&#38598;&#20013;&#24335;&#36335;&#30001;&#34920;&#65306;<\/p>\n<pre><code class=\"language-dart\">\/\/ routes\/app_routes.dart\nclass AppRoutes {\nstatic const home = '\/';\nstatic const profile = '\/profile';\n\nstatic final router = GoRouter(\n  routes: [\n    GoRoute(path: home, builder: (_,__) =&gt; HomePage()),\n    GoRoute(path: profile, builder: (_,__) =&gt; ProfilePage())\n  ]\n);\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>&#20195;&#30721;&#20998;&#23618;&#23454;&#36341;<\/h3>\n<ul>\n<li>\n<p><strong>&#25968;&#25454;&#23618;<\/strong>&#65306;&#23454;&#29616; <code>Repository<\/code> &#27169;&#24335;&#65292;&#38548;&#31163; API &#19982;&#26412;&#22320;&#23384;&#20648;&#65306;<\/p>\n<pre><code class=\"language-dart\">abstract class AuthRepository {\nFuture<user> login(String email, String password);\n}\n\nclass AuthRepositoryImpl implements AuthRepository {\nfinal AuthApi _api;\nfinal AuthLocalStorage _storage;\n\nFuture<user> login(...) async {\n  final user = await _api.login(...);\n  await _storage.saveUser(user);\n  return user;\n}\n}<\/user><\/user><\/code><\/pre>\n<\/li>\n<li><strong>&#39046;&#22495;&#23618;<\/strong>&#65306;&#23450;&#20041; <code>UseCase<\/code> &#23553;&#35013;&#19994;&#21153;&#35268;&#21017;&#12290;<\/li>\n<\/ul>\n<h2>&#39640;&#32423;&#39033;&#30446;&#32467;&#26500;<\/h2>\n<h3>&#22810;&#21253;&#31649;&#29702;&#65288;Monorepo&#65289;<\/h3>\n<ul>\n<li><strong>&#26041;&#26696;<\/strong>&#65306;&#20351;&#29992; <code>melos<\/code> &#31649;&#29702;&#22810;&#20010;&#29420;&#31435;&#21253;&#65292;&#20849;&#20139;&#20381;&#36182;&#19982;&#24037;&#20855;&#38142;&#12290;<\/li>\n<li>\n<p><strong>&#30446;&#24405;&#31034;&#20363;<\/strong>&#65306;<\/p>\n<pre><code>monorepo\/\n&#9500;&#9472;&#9472; packages\/\n&#9474;   &#9500;&#9472;&#9472; design_system\/   # UI &#32452;&#20214;&#24211;\n&#9474;   &#9500;&#9472;&#9472; auth\/            # &#35748;&#35777;&#27169;&#22359;\n&#9474;   &#9492;&#9472;&#9472; analytics\/       # &#20998;&#26512;SDK\n&#9500;&#9472;&#9472; apps\/\n&#9474;   &#9500;&#9472;&#9472; mobile_app\/      # &#20027;&#24212;&#29992;\n&#9474;   &#9492;&#9472;&#9472; admin_panel\/      # &#31649;&#29702;&#21518;&#21488;\n&#9492;&#9472;&#9472; melos.yaml            # &#22810;&#21253;&#37197;&#32622;<\/code><\/pre>\n<\/li>\n<\/ul>\n<h3>&#24494;&#21069;&#31471;&#26550;&#26500;<\/h3>\n<ul>\n<li>\n<p><strong>&#27169;&#22359;&#21160;&#24577;&#21152;&#36733;<\/strong>&#65306;&#36890;&#36807; <code>flutter_modular<\/code> &#23454;&#29616;&#25353;&#38656;&#21152;&#36733;&#65306;<\/p>\n<pre><code class=\"language-dart\">void main() =&gt; runApp(ModularApp(module: AppModule()));\n\nclass AppModule extends Module {\n@override\nList<bind> get binds =&gt; [...];\n\n@override\nList<modularroute> get routes =&gt; [\n  ChildRoute('\/', child: (_,__) =&gt; HomePage()),\n  ModuleRoute('\/products', module: ProductModule())\n];\n}<\/modularroute><\/bind><\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>&#24037;&#20855;&#19982;&#26368;&#20339;&#23454;&#36341;<\/h2>\n<h3>&#24320;&#21457;&#27969;&#31243;<\/h3>\n<ol>\n<li><strong>&#21021;&#22987;&#21270;&#39033;&#30446;<\/strong>&#65306;<code>flutter create --org com.example my_app<\/code>&#12290;<\/li>\n<li><strong>&#20381;&#36182;&#31649;&#29702;<\/strong>&#65306;\n<ul>\n<li>&#28155;&#21152;&#20381;&#36182;&#65306;<code>flutter pub add provider<\/code>&#12290;<\/li>\n<li>&#21319;&#32423;&#20381;&#36182;&#65306;<code>flutter pub upgrade --major-versions<\/code>&#12290;<\/li>\n<\/ul>\n<\/li>\n<li><strong>&#20195;&#30721;&#26684;&#24335;&#21270;<\/strong>&#65306;&#20351;&#29992; <code>import_sorter<\/code> &#33258;&#21160;&#25972;&#29702;&#23548;&#20837;&#12290;<\/li>\n<\/ol>\n<h3>&#24615;&#33021;&#20248;&#21270;<\/h3>\n<ul>\n<li><strong>&#32534;&#35793;&#20248;&#21270;<\/strong>&#65306;&#21551;&#29992; <code>--dart-define<\/code> &#21306;&#20998;&#29615;&#22659;&#37197;&#32622;&#12290;<\/li>\n<li><strong>&#20869;&#23384;&#20998;&#26512;<\/strong>&#65306;&#36890;&#36807; DevTools &#26816;&#27979; Widget &#37325;&#24314;&#19982;&#20869;&#23384;&#27844;&#28431;&#12290;<\/li>\n<\/ul>\n<h2>&#24635;&#32467;<\/h2>\n<p>&#26500;&#24314;&#20581;&#22766;&#30340; Flutter &#39033;&#30446;&#38656;&#20851;&#27880;&#65306;<\/p>\n<ol>\n<li><strong>&#20998;&#23618;&#28165;&#26224;<\/strong>&#65306;&#20005;&#26684;&#20998;&#31163; UI\/&#36923;&#36753;\/&#25968;&#25454;&#23618;&#65292;&#36890;&#36807; DI &#35299;&#32806;&#12290;<\/li>\n<li><strong>&#27169;&#22359;&#21270;&#35774;&#35745;<\/strong>&#65306;&#25353;&#21151;&#33021;&#21010;&#20998;&#27169;&#22359;&#65292;&#25903;&#25345;&#29420;&#31435;&#24320;&#21457;&#19982;&#27979;&#35797;&#12290;<\/li>\n<li><strong>&#29366;&#24577;&#31649;&#29702;<\/strong>&#65306;&#26681;&#25454;&#22797;&#26434;&#24230;&#36873;&#25321;&#21512;&#36866;&#26041;&#26696;&#65292;&#36991;&#20813;&#20840;&#23616;&#29366;&#24577;&#27745;&#26579;&#12290;<\/li>\n<li><strong>&#33258;&#21160;&#21270;&#24037;&#20855;<\/strong>&#65306;&#38598;&#25104;&#20195;&#30721;&#29983;&#25104;&#12289;&#26684;&#24335;&#21270;&#12289;&#38745;&#24577;&#20998;&#26512;&#25552;&#21319;&#25928;&#29575;&#12290;<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#23454;&#36341;&#65292;&#21487;&#26500;&#24314;&#20986;&#21487;&#32500;&#25252;&#24615;&#24378;&#12289;&#36866;&#24212;&#24555;&#36895;&#36845;&#20195;&#30340; Flutter &#24212;&#29992;&#26550;&#26500;&#65292;&#20174;&#23481;&#24212;&#23545;&#20174;&#20013;&#23567;&#22411;&#24212;&#29992;&#21040;&#20225;&#19994;&#32423;&#39033;&#30446;&#30340;&#25361;&#25112;&#12290;<\/p>\n<\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>&#26680;&#24515;&#27010;&#24565; Package&#65288;&#038;#21253&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-414","post","type-post","status-publish","format-standard","hentry","category-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Dart &amp; Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blog.yfstudio.online\/?p=414\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dart &amp; Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress\" \/>\n<meta property=\"og:description\" content=\"&#26680;&#24515;&#27010;&#24565; Package&#65288;&amp;#21253&hellip;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blog.yfstudio.online\/?p=414\" \/>\n<meta property=\"og:site_name\" content=\"\u4f9d\u51e1\u7684 Wordpress\" \/>\n<meta property=\"article:published_time\" content=\"2025-03-30T09:34:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-30T10:35:26+00:00\" \/>\n<meta name=\"author\" content=\"\u4f9d\u51e1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u4f9d\u51e1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414#article\",\"isPartOf\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414\"},\"author\":{\"name\":\"\u4f9d\u51e1\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08\"},\"headline\":\"Dart &#038; Flutter \u9879\u76ee\u7ed3\u6784\",\"datePublished\":\"2025-03-30T09:34:02+00:00\",\"dateModified\":\"2025-03-30T10:35:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414\"},\"wordCount\":29,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\"},\"articleSection\":[\"\u7f16\u7a0b\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/blog.yfstudio.online\/?p=414#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414\",\"url\":\"http:\/\/blog.yfstudio.online\/?p=414\",\"name\":\"Dart & Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress\",\"isPartOf\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#website\"},\"datePublished\":\"2025-03-30T09:34:02+00:00\",\"dateModified\":\"2025-03-30T10:35:26+00:00\",\"breadcrumb\":{\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/blog.yfstudio.online\/?p=414\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/blog.yfstudio.online\/?p=414#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/blog.yfstudio.online\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dart &#038; Flutter \u9879\u76ee\u7ed3\u6784\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/blog.yfstudio.online\/#website\",\"url\":\"http:\/\/blog.yfstudio.online\/\",\"name\":\"\u4f9d\u51e1\u7684 Wordpress\",\"description\":\"\",\"publisher\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/blog.yfstudio.online\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/blog.yfstudio.online\/#organization\",\"name\":\"YFStudio\",\"url\":\"http:\/\/blog.yfstudio.online\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/\",\"url\":\"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png\",\"contentUrl\":\"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png\",\"width\":1600,\"height\":800,\"caption\":\"YFStudio\"},\"image\":{\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/space.bilibili.com\/549933280\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08\",\"name\":\"\u4f9d\u51e1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/blog.yfstudio.online\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422\",\"contentUrl\":\"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422\",\"caption\":\"\u4f9d\u51e1\"},\"sameAs\":[\"http:\/\/blog.yfstudio.online\"],\"url\":\"http:\/\/blog.yfstudio.online\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dart & Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blog.yfstudio.online\/?p=414","og_locale":"zh_CN","og_type":"article","og_title":"Dart & Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress","og_description":"&#26680;&#24515;&#27010;&#24565; Package&#65288;&#21253&hellip;","og_url":"http:\/\/blog.yfstudio.online\/?p=414","og_site_name":"\u4f9d\u51e1\u7684 Wordpress","article_published_time":"2025-03-30T09:34:02+00:00","article_modified_time":"2025-03-30T10:35:26+00:00","author":"\u4f9d\u51e1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u4f9d\u51e1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blog.yfstudio.online\/?p=414#article","isPartOf":{"@id":"http:\/\/blog.yfstudio.online\/?p=414"},"author":{"name":"\u4f9d\u51e1","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08"},"headline":"Dart &#038; Flutter \u9879\u76ee\u7ed3\u6784","datePublished":"2025-03-30T09:34:02+00:00","dateModified":"2025-03-30T10:35:26+00:00","mainEntityOfPage":{"@id":"http:\/\/blog.yfstudio.online\/?p=414"},"wordCount":29,"commentCount":0,"publisher":{"@id":"http:\/\/blog.yfstudio.online\/#organization"},"articleSection":["\u7f16\u7a0b"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blog.yfstudio.online\/?p=414#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blog.yfstudio.online\/?p=414","url":"http:\/\/blog.yfstudio.online\/?p=414","name":"Dart & Flutter \u9879\u76ee\u7ed3\u6784 - \u4f9d\u51e1\u7684 Wordpress","isPartOf":{"@id":"http:\/\/blog.yfstudio.online\/#website"},"datePublished":"2025-03-30T09:34:02+00:00","dateModified":"2025-03-30T10:35:26+00:00","breadcrumb":{"@id":"http:\/\/blog.yfstudio.online\/?p=414#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blog.yfstudio.online\/?p=414"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/blog.yfstudio.online\/?p=414#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/blog.yfstudio.online\/"},{"@type":"ListItem","position":2,"name":"Dart &#038; Flutter \u9879\u76ee\u7ed3\u6784"}]},{"@type":"WebSite","@id":"http:\/\/blog.yfstudio.online\/#website","url":"http:\/\/blog.yfstudio.online\/","name":"\u4f9d\u51e1\u7684 Wordpress","description":"","publisher":{"@id":"http:\/\/blog.yfstudio.online\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/blog.yfstudio.online\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":"Organization","@id":"http:\/\/blog.yfstudio.online\/#organization","name":"YFStudio","url":"http:\/\/blog.yfstudio.online\/","logo":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/","url":"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png","contentUrl":"http:\/\/blog.yfstudio.online\/wp-content\/uploads\/2025\/02\/YF-Studio_logo.png","width":1600,"height":800,"caption":"YFStudio"},"image":{"@id":"http:\/\/blog.yfstudio.online\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/space.bilibili.com\/549933280"]},{"@type":"Person","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/347dc2b9e49d9ab18b527a487874bb08","name":"\u4f9d\u51e1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/blog.yfstudio.online\/#\/schema\/person\/image\/","url":"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422","contentUrl":"https:\/\/cravatar.com\/avatar\/2bf3633204b745b9bfe9ec1e86f14422?s=96&d=mm&r=g&cache-key=2bf3633204b745b9bfe9ec1e86f14422","caption":"\u4f9d\u51e1"},"sameAs":["http:\/\/blog.yfstudio.online"],"url":"http:\/\/blog.yfstudio.online\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=414"}],"version-history":[{"count":4,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions"}],"predecessor-version":[{"id":418,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=\/wp\/v2\/posts\/414\/revisions\/418"}],"wp:attachment":[{"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=414"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.yfstudio.online\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}