<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>huyangpahuo</title><description>emmmmmmmmmmmm</description><link>https://huyangpahuo.vercel.app/</link><language>zh</language><item><title>关于vercel的缓存机制</title><link>https://huyangpahuo.vercel.app/posts/guan-yu-vercel-de-huan-cun-ji-zhi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/guan-yu-vercel-de-huan-cun-ji-zhi/</guid><description>本篇解决Vercel缓存机制造成大量存储空间的浪费的问题</description><pubDate>Wed, 14 Oct 2026 12:26:47 GMT</pubDate><content:encoded>&lt;h1 id=&quot;vercel有一套缓存机制也就是默认保留30天内所有构建快照&quot;&gt;Vercel有一套缓存机制,也就是默认保留30天内所有构建快照&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#vercel有一套缓存机制也就是默认保留30天内所有构建快照&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;结果就是让本就不多的存储空间雪上加霜&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014205715463.webp&quot; alt=&quot;image-20261014205715463&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;实际上我就部署了一个twikoo后端和一个astro博客,连2GB都不到,what can i say~&lt;/p&gt;
&lt;h2 id=&quot;解决方案&quot;&gt;解决方案&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#解决方案&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;手动删除&quot;&gt;手动删除&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#手动删除&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先前往deployments里删历史记录&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014213624620.webp&quot; alt=&quot;image-20261014213624620&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到这里有过往的部署记录&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014213831203.webp&quot; alt=&quot;image-20261014213831203&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;要想删掉还得一个一个点进这个记录去手动删除...&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014214129216.webp&quot; alt=&quot;image-20261014214129216&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;自动删除&quot;&gt;自动删除&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#自动删除&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先在&lt;code&gt;设置(settings)&lt;/code&gt;里找到&lt;code&gt;安全(Security)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014214735506.webp&quot; alt=&quot;image-20261014214735506&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;进入界面找到&lt;strong&gt;Recently Deleted Deployments&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;可以看到vercel把这些记录堆在这,默认保存30天,超过30天的才会自动删&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014221934026.webp&quot; alt=&quot;image-20261014221934026&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们不需要它保存这么多天,所以我们需要修改安全策略,点击&lt;code&gt;defined retention policy&lt;/code&gt;进入&lt;code&gt;Build and Deployment&lt;/code&gt;页面&lt;/p&gt;
&lt;p&gt;或者在这打开&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%85%B3%E4%BA%8Evercel%E7%9A%84%E7%BC%93%E5%AD%98%E6%9C%BA%E5%88%B6/image-20261014222252212.webp&quot; alt=&quot;image-20261014222252212&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后把30天全改成1天,或者你想留时间长点也行&lt;/p&gt;
&lt;p&gt;这样去睡一觉就恢复正常了&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Vercel</category></item><item><title>删除Windows开机自启动软件残留</title><link>https://huyangpahuo.vercel.app/posts/shan-chu-windows-kai-ji-zi-qi-dong-ruan-jian-can-liu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shan-chu-windows-kai-ji-zi-qi-dong-ruan-jian-can-liu/</guid><description>关于部分软件删除后开机自启动项仍存在解决方法</description><pubDate>Wed, 14 Oct 2026 09:03:45 GMT</pubDate><content:encoded>&lt;h1 id=&quot;部分软件在删除后会出现开机自启动项仍存在&quot;&gt;部分软件在删除后会出现开机自启动项仍存在&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#部分软件在删除后会出现开机自启动项仍存在&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%A0%E9%99%A4Windows%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8%E8%BD%AF%E4%BB%B6%E6%AE%8B%E7%95%99/image-20261014170628873.webp&quot; alt=&quot;image-20261014170628873&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;删除启动项&quot;&gt;删除启动项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#删除启动项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;按 &lt;code&gt;Win + R&lt;/code&gt;，输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;shell:startup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果里面有对应程序的快捷方式 , 直接删除即可&lt;/p&gt;
&lt;p&gt;然后再检查看看里面有没有&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;shell:common startup
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;删除注册表启动项&quot;&gt;删除注册表启动项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#删除注册表启动项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果任务管理器里能看到, 但启动文件夹里没有，可以检查&lt;/p&gt;
&lt;p&gt;按 &lt;code&gt;Win + R&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;regedit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后检查&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%A0%E9%99%A4Windows%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8%E8%BD%AF%E4%BB%B6%E6%AE%8B%E7%95%99/image-20261014171433774.webp&quot; alt=&quot;image-20261014171433774&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;以及&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%A0%E9%99%A4Windows%E5%BC%80%E6%9C%BA%E8%87%AA%E5%90%AF%E5%8A%A8%E8%BD%AF%E4%BB%B6%E6%AE%8B%E7%95%99/image-20261014171632669.webp&quot; alt=&quot;image-20261014171632669&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到对应程序后删除它的启动项 ,&lt;strong&gt;这里一定要确认名称和路径，不要随便删其他项目&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Diary</category></item><item><title>VScode插件制作</title><link>https://huyangpahuo.vercel.app/posts/vscode-cha-jian-zhi-zuo/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/vscode-cha-jian-zhi-zuo/</guid><description>使用VScode给我的viora制作VScode插件</description><pubDate>Wed, 14 Oct 2026 02:59:45 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇来制作vscode插件&quot;&gt;本篇来制作VScode插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇来制作vscode插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;之前做viora的插件时很头疼,因为每次都要让agent按照规定生成,我参与不了一点也看不到细节&lt;/p&gt;
&lt;p&gt;开始的时候想的是做一个工作台,然后把sdk塞进去,然后在工作台里写代码并直接使用工作台生成这个插件&lt;/p&gt;
&lt;p&gt;但是体验感太差,而且这完全是重复造轮子而且无法结合ai使用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;插件初步思路:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要结合viora sdk使用&lt;/li&gt;
&lt;li&gt;需要可以在侧边栏预览转换前后的图片,在VScode右上角点击icon就能快速打开&lt;/li&gt;
&lt;li&gt;需要快捷生成和打包插件的命令&lt;/li&gt;
&lt;li&gt;需要有提供语法高亮、代码补全、错误诊断、跳转定义、格式化等能力(其实也不需要,毕竟代码是C#,可以直接用微软的那个C#插件)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;环境配置&quot;&gt;环境配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#环境配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;假设你已经安装了pnpm nodejs npm git&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;首先创建工作文件夹&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;mkdir&lt;/span&gt; vscode-workshop &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; vscode-workshop
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们使用npm安装如下工具&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;yo&lt;/code&gt;：全称叫 &lt;code&gt;Yeoman&lt;/code&gt;，是一个现代 Web 应用的脚手架工具（命令行工具），用于快速生成项目。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generator-code&lt;/code&gt;：&lt;code&gt;VS Code&lt;/code&gt; 扩展生成器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;运行 &lt;code&gt;yo code&lt;/code&gt; 命令, 创建并初始化项目&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; yo generator-code

yo code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;选择选项&quot;&gt;选择选项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#选择选项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;然后我们需要回答几个问题,回答问题只需要&lt;code&gt;Enter&lt;/code&gt;回车&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? What &lt;span class=&quot;token builtin class-name&quot;&gt;type&lt;/span&gt; of extension &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; you want to create?     &lt;span class=&quot;token comment&quot;&gt;#选择 New Extension (TypeScript)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? What&apos;s the name of your extension?    &lt;span class=&quot;token comment&quot;&gt;#随便取个名字比如 Viora&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? What&apos;s the identifier of your extension? &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;viora&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;#回车即可&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? What&apos;s the description of your extension?     &lt;span class=&quot;token comment&quot;&gt;#随便写一个插件的描述例如: Viora plugin development with scaffolding, validation, packaging, installation, and essential development tools&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? Initialize a &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; repository? &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Y/n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;# 输入Y同意&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? Which bundler to use?  &lt;span class=&quot;token comment&quot;&gt;# 选 esbuild&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;? Which package manager to use?  &lt;span class=&quot;token comment&quot;&gt;# 选 pnpm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后可能遇到这种情况即pnpm阻止了&lt;code&gt;esbuild&lt;/code&gt;的安装脚本执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;Error: ERR_PNPM_IGNORED_BUILDS

  × installing dependencies
  ╰─▶ Ignored build scripts: esbuild@0&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;28&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;2
  help: Run &lt;span class=&quot;token string&quot;&gt;&quot;pnpm approve-builds&quot;&lt;/span&gt; to pick which dependencies should be allowed to run scripts&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;

Error code

Command failed with &lt;span class=&quot;token keyword&quot;&gt;exit&lt;/span&gt; code 1: pnpm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们进入目录批准安装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Set-Location&lt;/span&gt; D:\vscode-workshop\viora

pnpm &lt;span class=&quot;token function&quot;&gt;approve-builds&lt;/span&gt; esbuild
pnpm install
pnpm exec esbuild &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;目录&quot;&gt;目录&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#目录&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;viora
├── node_modules
│   ├── @types    
│   │   ├── mocha &lt;span class=&quot;token comment&quot;&gt;#提供 Mocha 的类型定义&lt;/span&gt;
│   │   ├── node  &lt;span class=&quot;token comment&quot;&gt;#提供 Node.js 的类型定义&lt;/span&gt;
│   │   └── vscode  &lt;span class=&quot;token comment&quot;&gt;#提供 VS Code API 的 TypeScript 类型定义&lt;/span&gt;
│   ├── @vscode   
│   │   ├── &lt;span class=&quot;token function&quot;&gt;test-cli&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;#辅助执行 VS Code 扩展测试&lt;/span&gt;
│   │   └── &lt;span class=&quot;token function&quot;&gt;test-electron&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;#提供基于 Electron 的扩展测试环境&lt;/span&gt;
│   ├── esbuild   &lt;span class=&quot;token comment&quot;&gt;#编译和打包代码&lt;/span&gt;
│   ├── eslint   &lt;span class=&quot;token comment&quot;&gt;#检查 TypeScript 代码&lt;/span&gt;
│   ├── npm-run-all  &lt;span class=&quot;token comment&quot;&gt;#帮助组合和运行多个 npm/pnpm 脚本&lt;/span&gt;
│   ├── typescript   &lt;span class=&quot;token comment&quot;&gt;#提供 TypeScript 编译器&lt;/span&gt;
│   └── typescript-eslint   &lt;span class=&quot;token comment&quot;&gt;#检查 TypeScript 代码&lt;/span&gt;
├── src
│   ├── test   &lt;span class=&quot;token comment&quot;&gt;#测试文件&lt;/span&gt;
│   │   └── extension&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;test&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ts     
│   └── extension&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ts   &lt;span class=&quot;token comment&quot;&gt;# 插件的主要入口文件&lt;/span&gt;
├── CHANGELOG&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;md   &lt;span class=&quot;token comment&quot;&gt;#记录各版本的新功能、修复和变更&lt;/span&gt;
├── README&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;md
├── esbuild&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;js      &lt;span class=&quot;token comment&quot;&gt;#构建脚本，告诉 esbuild 如何编译和打包你的 TypeScript 代码&lt;/span&gt;
├── eslint&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;config&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mjs   &lt;span class=&quot;token comment&quot;&gt;#配置 ESLint，检查代码风格和潜在问题&lt;/span&gt;
├── package&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;json &lt;span class=&quot;token comment&quot;&gt;#最重要的配置文件之一,声明插件名称、版本、入口文件、命令、菜单、快捷键、依赖和开发脚本等&lt;/span&gt;
├── pnpm-lock&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yaml    &lt;span class=&quot;token comment&quot;&gt;#锁定依赖解析结果，尽量确保不同环境安装到一致的依赖版本&lt;/span&gt;
├── pnpm-workspace&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yaml    &lt;span class=&quot;token comment&quot;&gt;#定义 pnpm 工作区及相关配置。单项目通常不需要复杂的工作区设置&lt;/span&gt;
├── tsconfig&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;json   &lt;span class=&quot;token comment&quot;&gt;# 配置 TypeScript 编译规则，例如目标 JavaScript 版本、模块类型和类型检查选项&lt;/span&gt;
└── vsc-extension-quickstart&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;md  &lt;span class=&quot;token comment&quot;&gt;#官方脚手架生成的快速入门说明，主要用于指导如何运行、调试和测试扩展&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;完成后进入 VS Code，按下&lt;code&gt;F5&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;或者点这两个地方也可以&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014160812220.webp&quot; alt=&quot;image-20261014160812220&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014160847450.webp&quot; alt=&quot;image-20261014160847450&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;成功的话会弹出来一个&lt;strong&gt;Extension Development Host&lt;/strong&gt;(开发宿主窗口)，其中就运行着插件&lt;/p&gt;
&lt;p&gt;也可以通过在 VS Code 中按 &lt;code&gt;Ctrl + Shift + P&lt;/code&gt; 搜索并执行 &lt;code&gt;Debug: Select and Start Debugging&lt;/code&gt;打开这个窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014163427823.webp&quot; alt=&quot;image-20261014163427823&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;按 &lt;code&gt;Ctrl+Shift+P&lt;/code&gt; 执行 &quot;Hello World&quot; 命令&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014164151687.webp&quot; alt=&quot;image-20261014164151687&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;出现 &lt;strong&gt;Hello World from 项目名&lt;/strong&gt; 就成功了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014164033179.webp&quot; alt=&quot;image-20261014164033179&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时我们项目根目录出现了一个&lt;code&gt;dist&lt;/code&gt;文件夹里面有&lt;code&gt;extension.js&lt;/code&gt;和&lt;code&gt;extension.js.map&lt;/code&gt;文件&lt;/p&gt;
&lt;p&gt;当然这个右下角弹窗信息我们还可以改成我们自己的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014172958932.webp&quot; alt=&quot;image-20261014172958932&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;可能遇到的问题&quot;&gt;可能遇到的问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#可能遇到的问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们f5调试时可能出现这种情况 就是&lt;/p&gt;
&lt;p&gt;显示 &lt;code&gt;Parameter format not correct - -Command&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后开发宿主窗口也不弹出来&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014163114927.webp&quot; alt=&quot;image-20261014163114927&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;这个就很玄学,也有人向微软提过这个问题&lt;/p&gt;
&lt;p&gt;VS Code表示：任务和调试默认使用当前默认终端配置，但可以通过&lt;code&gt;terminal.integrated.automationProfile.windows&lt;/code&gt; 单独指定任务所用的 Shell来避免干扰&lt;/p&gt;
&lt;p&gt;我们使用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Get-Command&lt;/span&gt; pwsh&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exe&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;获取当前powershell终端的exe路径(比如我的是powershell 7+版本)&lt;/p&gt;
&lt;p&gt;然后打开&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014164332159.webp&quot; alt=&quot;image-20261014164332159&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VScode%E6%8F%92%E4%BB%B6%E5%88%B6%E4%BD%9C/image-20261014164434628.webp&quot; alt=&quot;image-20261014164434628&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;把下面这段粘进去, 在path地区替换为你自己的,记住路径使用两个斜杠&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.automationProfile.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;path&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;C:\\Program Files\\WindowsApps\\Microsoft.PowerShell_7.6.6.0_x64__8wekyb3d8bbwe\\pwsh.exe&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;-NoLogo&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-NoProfile&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这样就能解决这个问题&lt;/p&gt;
&lt;h2 id=&quot;packagejson文件相关参数&quot;&gt;package.json文件相关参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#packagejson文件相关参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;</content:encoded><category>电脑日常</category><category>VScode</category></item><item><title>twikoo在vercel上部署过程</title><link>https://huyangpahuo.vercel.app/posts/twikoo-zai-vercel-shang-bu-shu-guo-cheng/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/twikoo-zai-vercel-shang-bu-shu-guo-cheng/</guid><description>记录twikoo的在vercel部署过程</description><pubDate>Tue, 13 Oct 2026 11:04:18 GMT</pubDate><content:encoded>&lt;h1 id=&quot;其实25年末我就部署了twikoo&quot;&gt;其实25年末我就部署了twikoo&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#其实25年末我就部署了twikoo&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;只是当时版本比较旧,今天我想升级一下,结果twikoo后端升级后光速崩溃(果然后端这种东西能用就不要升级......)&lt;/p&gt;
&lt;p&gt;然后花了一天半也不知道是为什么,没办法删掉重新搞一遍吧,不过变化和去年还是很大的&lt;/p&gt;
&lt;h2 id=&quot;前置准备&quot;&gt;前置准备&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#前置准备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;假设你已经完成了MongoDB数据库的创建,且github绑定了vercel&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;配置github存储库&quot;&gt;配置github存储库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置github存储库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;方式1推荐&quot;&gt;方式1(推荐)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#方式1推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;按照twikoo给的&lt;a href=&quot;https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Ftwikoojs%2Ftwikoo%2Ftree%2Fmain%2Ftemplates%2Fvercel-min&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;一键部署&lt;/a&gt;模板在github创建仓库&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013192519472.webp&quot; alt=&quot;image-20261013192519472&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;然后我们配置mongodb数据库&quot;&gt;然后我们配置MongoDB数据库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后我们配置mongodb数据库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013200559260.webp&quot; alt=&quot;image-20261013200559260&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点开环境变量(Environment Variables)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013200823614.webp&quot; alt=&quot;image-20261013200823614&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;保存(save)并重新部署(redeploy)&lt;/p&gt;
&lt;p&gt;然后我们需要关掉vercel的认证保护,否则twikoo的消息推送会被拦截&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013194512080.webp&quot; alt=&quot;image-20261013194512080&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们就能在网站直接用这个vercel的链接和前端连接了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013201548002.webp&quot; alt=&quot;image-20261013201548002&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;方式二通用&quot;&gt;方式二(通用)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#方式二通用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;把twikoo仓库复刻到你的github&lt;/p&gt;
&lt;p&gt;原理相同,只不过直接复刻的在多个平台如更通用&lt;/p&gt;
&lt;p&gt;在vercel创建项目并导入github的复刻仓库&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013192631213.webp&quot; alt=&quot;image-20261013192631213&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后将默认的&lt;code&gt;./&lt;/code&gt;改成&lt;code&gt;templates/vercel-min&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013192855255.webp&quot; alt=&quot;image-20261013192855255&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013193606617.webp&quot; alt=&quot;image-20261013193606617&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个是表示我们我们只导入这个文件夹里的模板而非整个仓库&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013193112164.webp&quot; alt=&quot;image-20261013193112164&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后构建使用 &lt;code&gt;npm install&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013194847271.webp&quot; alt=&quot;image-20261013194847271&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后配置环境变量&lt;/p&gt;
&lt;p&gt;key填&lt;code&gt;MONGODB_URI&lt;/code&gt;,然后value填你的MongoDB链接秘钥&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013194022802.webp&quot; alt=&quot;image-20261013194022802&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/twikoo%E5%9C%A8vercel%E4%B8%8A%E9%83%A8%E7%BD%B2%E8%BF%87%E7%A8%8B/image-20261013194512080.webp&quot; alt=&quot;image-20261013194512080&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Twikoo</category></item><item><title>npm和pnpm迁移到D盘</title><link>https://huyangpahuo.vercel.app/posts/npm-he-pnpm-qian-yi-dao-d-pan/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/npm-he-pnpm-qian-yi-dao-d-pan/</guid><description>本篇记录自己迁移npm和pnpm的记录</description><pubDate>Mon, 12 Oct 2026 01:52:36 GMT</pubDate><content:encoded>&lt;h1 id=&quot;npm和pnpm默认是安装到c盘的久而久之就越堆越多&quot;&gt;npm和pnpm默认是安装到C盘的,久而久之就越堆越多&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#npm和pnpm默认是安装到c盘的久而久之就越堆越多&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;我们需要给他们在D盘建个文件夹&lt;/p&gt;
&lt;p&gt;这里我的是&lt;/p&gt;
&lt;p&gt;D:\npm-global&lt;/p&gt;
&lt;p&gt;D:\npm-cache&lt;/p&gt;
&lt;p&gt;D:\pnpm&lt;/p&gt;
&lt;p&gt;D:\pnpm-cache&lt;/p&gt;
&lt;p&gt;D:\pnpm-state&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;检测当前的情况&quot;&gt;检测当前的情况&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检测当前的情况&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;终端输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;===== NODE =====&quot;&lt;/span&gt;
node &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
where&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exe node

&lt;span class=&quot;token function&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;`n===== NPM =====&quot;&lt;/span&gt;
npm &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
npm config get prefix
npm prefix &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g
npm root &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g
npm config get cache
where&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exe npm
where&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exe npx

&lt;span class=&quot;token function&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;`n===== PNPM =====&quot;&lt;/span&gt;
pnpm &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
pnpm root &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g
pnpm bin &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g
pnpm store path
pnpm config get store-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get cache-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get state-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get global-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get global-bin-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
where&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;exe pnpm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;先把当前结果丢给ai,让它帮你看看这些东西在C盘的什么地方,然后再按照我如下的说明让ai帮你调整修改和删除旧配置&lt;/p&gt;
&lt;h2 id=&quot;npm配置&quot;&gt;npm配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#npm配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;npm是随着&lt;a href=&quot;https://nodejs.org/en/download&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;nodejs&lt;/a&gt;安装的&lt;/p&gt;
&lt;p&gt;设置&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; prefix &lt;span class=&quot;token string&quot;&gt;&quot;D:\npm-global&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
npm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; cache &lt;span class=&quot;token string&quot;&gt;&quot;D:\npm-cache&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;验证&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm config get prefix
npm config get cache
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们使用npm安装pnpm&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global pnpm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;设置path变量&quot;&gt;设置path变量&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#设置path变量&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们在powershell执行如下命令&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$paths&lt;/span&gt; = @&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;D:\npm-global&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm\bin&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token variable&quot;&gt;$userPath&lt;/span&gt; = &lt;span class=&quot;token namespace&quot;&gt;[Environment]&lt;/span&gt;::GetEnvironmentVariable&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Path&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;User&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;split &lt;span class=&quot;token string&quot;&gt;&quot;;&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$path&lt;/span&gt; in &lt;span class=&quot;token variable&quot;&gt;$paths&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$userPath&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-notcontains&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token variable&quot;&gt;$userPath&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$path&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token namespace&quot;&gt;[Environment]&lt;/span&gt;::SetEnvironmentVariable&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;Path&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$userPath&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-join&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;User&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者手动添加&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/npm%E5%92%8Cpnpm%E8%BF%81%E7%A7%BB%E5%88%B0D%E7%9B%98/image-20261012102822201.webp&quot; alt=&quot;image-20261012102822201&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样之后我们使用npm安装的东西例如codex claude  dsh  hexo都会进入D:\npm-global&lt;/p&gt;
&lt;h2 id=&quot;pnpm配置&quot;&gt;pnpm配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pnpm配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;推荐结构&quot;&gt;推荐结构&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#推荐结构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;store-dir     D:\pnpm\store&lt;/li&gt;
&lt;li&gt;cache-dir    D:\pnpm-cache&lt;/li&gt;
&lt;li&gt;state-dir     D:\pnpm-state&lt;/li&gt;
&lt;li&gt;global-dir   D:\pnpm\global&lt;/li&gt;
&lt;li&gt;global-bin-dir   D:\pnpm\bin&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;设置path变量-1&quot;&gt;设置path变量&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#设置path变量-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;[Environment]&lt;/span&gt;::SetEnvironmentVariable&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PNPM_HOME&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;User&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/npm%E5%92%8Cpnpm%E8%BF%81%E7%A7%BB%E5%88%B0D%E7%9B%98/image-20261012100720390.webp&quot; alt=&quot;image-20261012100720390&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;设置&quot;&gt;设置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#设置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;pnpm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; store-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm\store&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
pnpm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; cache-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm-cache&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
pnpm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; state-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm-state&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
pnpm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; global-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm\global&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
pnpm config &lt;span class=&quot;token function&quot;&gt;set&lt;/span&gt; global-bin-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\pnpm\bin&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;global
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;验证&quot;&gt;验证&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#验证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;pnpm config get store-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get cache-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get state-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get global-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm config get global-bin-&lt;span class=&quot;token function&quot;&gt;dir&lt;/span&gt;
pnpm store path
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>电脑日常</category><category>npm</category><category>pnpm</category></item><item><title>Boss设计草稿</title><link>https://huyangpahuo.vercel.app/posts/boss-she-ji-cao-gao/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/boss-she-ji-cao-gao/</guid><description>设计小游戏的boss</description><pubDate>Sun, 11 Oct 2026 08:15:35 GMT</pubDate><content:encoded>&lt;h1 id=&quot;starguardian开发日志&quot;&gt;Starguardian开发日志&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#starguardian开发日志&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;boss的重新构思&quot;&gt;boss的重新构思&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#boss的重新构思&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;目前就用ai做了几个boss初稿,只是ai给boss的名字感觉傻傻的&lt;/p&gt;
&lt;h3 id=&quot;已有二阶段&quot;&gt;已有二阶段&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#已有二阶段&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011164458722.webp&quot; alt=&quot;image-20261011164458722&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011161955725.webp&quot; alt=&quot;image-20261011161955725&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011164622051.webp&quot; alt=&quot;image-20261011164622051&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011162404884.webp&quot; alt=&quot;image-20261011162404884&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;未做二阶段&quot;&gt;未做二阶段&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#未做二阶段&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011162647486.webp&quot; alt=&quot;image-20261011162647486&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011163231977.webp&quot; alt=&quot;image-20261011163231977&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011163440378.webp&quot; alt=&quot;image-20261011163440378&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011163547622.webp&quot; alt=&quot;image-20261011163547622&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011163925815.webp&quot; alt=&quot;image-20261011163925815&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011164118941.webp&quot; alt=&quot;image-20261011164118941&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011164220126.webp&quot; alt=&quot;image-20261011164220126&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/image-20261011164351061.webp&quot; alt=&quot;image-20261011164351061&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;目前初步ai设计图&quot;&gt;目前初步ai设计图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#目前初步ai设计图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;让chatgpt生成了几个概念图、&lt;/p&gt;
&lt;h3 id=&quot;初版&quot;&gt;初版&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#初版&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E5%87%A0%E4%BD%95%E5%BC%B9%E5%B9%95_Boss_%E8%AE%BE%E8%AE%A1%E5%9B%BE%E9%89%B4.webp&quot; alt=&quot;几何弹幕_Boss_设计图鉴&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;后续的几个方案，跟抽卡一样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E9%9C%93%E8%99%B9%E5%87%A0%E4%BD%95%E9%A6%96%E9%A2%86%E5%9B%BE%E9%89%B4.webp&quot; alt=&quot;霓虹几何首领图鉴&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E5%8D%81%E9%A6%96%E9%A2%86%E7%A7%91%E5%B9%BB%E6%A6%82%E5%BF%B5%E5%9B%BE%E9%89%B4.webp&quot; alt=&quot;十首领科幻概念图鉴&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E7%A7%91%E5%B9%BB%E5%87%A0%E4%BD%95%E9%A6%96%E9%A2%86%E5%9B%BE%E9%89%B4.webp&quot; alt=&quot;科幻几何首领图鉴&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E7%A7%91%E5%B9%BB%E6%B8%B8%E6%88%8FBoss%E8%AE%BE%E8%AE%A1%E5%9B%BE%E9%89%B4.webp&quot; alt=&quot;科幻游戏Boss设计图鉴&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/Boss%E8%AE%BE%E8%AE%A1%E8%8D%89%E7%A8%BF/%E3%80%8A%E6%A3%8B%E5%B1%80%E4%B9%8B%E7%8E%8B%EF%BC%9A%E7%AC%AC%E4%BA%8C%E9%98%B6%E6%AE%B5%E9%A6%96%E9%A2%86%E5%9B%BE%E9%89%B4%E3%80%8B.webp&quot; alt=&quot;《棋局之王：第二阶段首领图鉴》&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;实现的难度也是很大的&lt;/p&gt;</content:encoded><category>生活日常</category><category>Diary</category></item><item><title>Linux---Linux入门</title><link>https://huyangpahuo.vercel.app/posts/linux-linux-ru-men/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/linux-linux-ru-men/</guid><description>本系列来学Linux的基本命令和操作</description><pubDate>Fri, 09 Oct 2026 00:31:22 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇我们来了解linux&quot;&gt;本篇我们来了解Linux&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇我们来了解linux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Linux是一个对个人免费开源的操作系统&lt;/p&gt;
&lt;p&gt;我们目前目前用的比较多的就是&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;苹果电脑macOS以及苹果手机iOS&lt;/li&gt;
&lt;li&gt;绝大多数基于WindowsOS的电脑&lt;/li&gt;
&lt;li&gt;安卓Android以及华为的鸿蒙HarmonyOS&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;mermaid&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-mermaid&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;graph&lt;/span&gt; LR
    unix &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt; Linux
    unix &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt; iOS和macOS
    Linux &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt; Android
    Linux &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt; HarmonyOS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;常见发行版&quot;&gt;常见发行版&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#常见发行版&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Debian、Ubuntu、Fedora、Red Hat Enterprise Linux、Arch Linux、CentOS、Manjaro等多达上百种发行版&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;技术&lt;/th&gt;&lt;th&gt;它解决的问题&lt;/th&gt;&lt;th&gt;你可以怎样理解&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;直接安装 Linux&lt;/td&gt;&lt;td&gt;让整台电脑运行 Linux&lt;/td&gt;&lt;td&gt;用 Linux 替代或搭配 Windows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;虚拟机(如VMware和Hyper-V和VirtualBox)&lt;/td&gt;&lt;td&gt;在现有系统上运行另一台虚拟电脑&lt;/td&gt;&lt;td&gt;在电脑里再开一台电脑&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;WSL 2&lt;/td&gt;&lt;td&gt;在 Windows 中运行 Linux 环境&lt;/td&gt;&lt;td&gt;不重装系统就能使用 Linux 工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Docker 容器&lt;/td&gt;&lt;td&gt;隔离应用及其运行环境&lt;/td&gt;&lt;td&gt;把程序和依赖打包，方便部署&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Elastic Compute Service(ECS)云服务器&lt;/td&gt;&lt;td&gt;可迅速创建或删除云服务器&lt;/td&gt;&lt;td&gt;花钱买别人现成的&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;对于直接安装或者在虚拟机中安装一般使用iso映像文件(Windows和macOS也可以通过iso文件安装)&lt;/p&gt;
&lt;p&gt;这里用维基百科的定义&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ISO映像&lt;/strong&gt;是一种&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%85%89%E7%A2%9F&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;光盘&lt;/a&gt;的&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%AD%98%E6%A1%A3%E6%96%87%E4%BB%B6&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;存档文件&lt;/a&gt;，是&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E7%A3%81%E7%9B%98%E6%98%A0%E5%83%8F&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;磁盘映像&lt;/a&gt;的类型之一，数据由一张&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%85%89%E7%A2%9F&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;光盘&lt;/a&gt;的每个&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E7%A3%81%E7%9B%98%E6%89%87%E5%8C%BA&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;扇区&lt;/a&gt;组成，这包括光盘的&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;文件系统&lt;/a&gt;ISO映像文件通常采用&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;文件扩展名&lt;/a&gt;&lt;code&gt;.iso&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在计算技术中，镜像是指一个单独的文件，它是一个容器，用来存放现有文件系统的数字副本，用于备份。ISO映像或&lt;code&gt;.ISO&lt;/code&gt;文件是一种容器格式，用于保存光盘（CD或DVD）上用于存储程序、电影和其他多媒体内容的文件系统。ISO是由国际标准组织制定的格式标准。ISO格式不用于音频CD执行ISO映像备份可以防止在发生硬盘故障时丢失信息。一个&lt;code&gt;.iso&lt;/code&gt;文件可刻录到新光盘上，也可直接从硬盘上存储和使用，ISO是用于CD和DVD的格式标准。将操作系统（OS）CD作为ISO存储在计算机上非常方便映像&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Linux 的图形化界面叫做 GUI（Graphical User Interface，图形用户界面）&lt;/p&gt;
&lt;p&gt;桌面、任务栏、开始菜单、窗口、文件管理器这一整套环境，通常叫 Desktop Environment（桌面环境，简称 DE）&lt;/p&gt;
&lt;p&gt;常见的GUI主要有&lt;/p&gt;
&lt;table&gt;
  &lt;tbody&gt;&lt;tr&gt;
    &lt;th colspan=&quot;5&quot; style=&quot;text-align: center;&quot;&gt;主流的GUI&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;GNOME&lt;/td&gt;
    &lt;td&gt;KDE Plasma&lt;/td&gt;
    &lt;td&gt;Xfce&lt;/td&gt;
    &lt;td&gt;MATE&lt;/td&gt;
    &lt;td&gt;LXQt&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;IceWM&lt;/td&gt;
    &lt;td&gt;Fluxbox&lt;/td&gt;
    &lt;td&gt;Cinnamon&lt;/td&gt;
    &lt;td&gt;Budgie&lt;/td&gt;
    &lt;td&gt;Pantheon&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
比较常用的就是`GNOME`和`KDE`还有`Cinnarmon`以及`Xfce`
&lt;p&gt;这个可以自行挑选自己喜欢的主题然后个性化调整,其实目前的linux桌面版使用体验和Windows差不多,自定义化程度很高&lt;/p&gt;
&lt;h2 id=&quot;linux基础命令&quot;&gt;Linux基础命令&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#linux基础命令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;事实上,我们在使用Windows的cmd和powershell的时候,可能见过某些命令,其中powershell非常强大,在兼容性,容错性,个性化等等方面应有尽有&lt;/p&gt;
&lt;p&gt;不过Windows由于GUI已经相当发达所以普通情况下基本上用不上终端,顶多用终端召唤ai的cli&lt;/p&gt;
&lt;p&gt;为减轻认知负担我们先学这些linux命令,毕竟在具体真实的场景使用才能记得住&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;命令&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;&lt;td&gt;显示当前目录&lt;/td&gt;&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;&lt;td&gt;列出文件和目录&lt;/td&gt;&lt;td&gt;&lt;code&gt;ls -la&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/td&gt;&lt;td&gt;切换目录&lt;/td&gt;&lt;td&gt;&lt;code&gt;cd /home&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;&lt;td&gt;创建目录&lt;/td&gt;&lt;td&gt;&lt;code&gt;mkdir test&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;touch&lt;/code&gt;&lt;/td&gt;&lt;td&gt;创建空文件或更新时间戳&lt;/td&gt;&lt;td&gt;&lt;code&gt;touch test.txt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;cp&lt;/code&gt;&lt;/td&gt;&lt;td&gt;复制文件&lt;/td&gt;&lt;td&gt;&lt;code&gt;cp a.txt b.txt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;mv&lt;/code&gt;&lt;/td&gt;&lt;td&gt;移动文件或重命名&lt;/td&gt;&lt;td&gt;&lt;code&gt;mv old.txt new.txt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;rm&lt;/code&gt;&lt;/td&gt;&lt;td&gt;删除文件&lt;/td&gt;&lt;td&gt;&lt;code&gt;rm test.txt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;rmdir&lt;/code&gt;&lt;/td&gt;&lt;td&gt;删除空目录&lt;/td&gt;&lt;td&gt;&lt;code&gt;rmdir test&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;find&lt;/code&gt;&lt;/td&gt;&lt;td&gt;查找文件&lt;/td&gt;&lt;td&gt;&lt;code&gt;find /home -name &quot;*.log&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;&lt;td&gt;判断文件类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;file test.txt&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;linux的文件系统&quot;&gt;Linux的文件系统&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#linux的文件系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;/&lt;/code&gt;：根目录&lt;/p&gt;
&lt;p&gt;整个 Linux 文件系统的起点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;~&lt;/code&gt;：当前用户的主目录&lt;/p&gt;
&lt;p&gt;例如 &lt;code&gt;/home/用户名&lt;/code&gt;，root 用户通常是 &lt;code&gt;/root&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;..&lt;/code&gt;：上一级目录&lt;/p&gt;
&lt;p&gt;例如 &lt;code&gt;cd ..&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;.&lt;/code&gt;：当前目录&lt;/p&gt;
&lt;p&gt;例如 &lt;code&gt;./program&lt;/code&gt; 表示运行当前目录里的 program&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>Linux</category><category>Linux</category></item><item><title>Docker---了解Docker</title><link>https://huyangpahuo.vercel.app/posts/docker-liao-jie-docker/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/docker-liao-jie-docker/</guid><description>今天来了解Docker</description><pubDate>Fri, 09 Oct 2026 00:23:16 GMT</pubDate><content:encoded>&lt;p&gt;从这里开始写作。&lt;/p&gt;</content:encoded><category>Docker</category><category>Docker</category></item><item><title>Typescript入门</title><link>https://huyangpahuo.vercel.app/posts/typescript-rumen/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/typescript-rumen/</guid><description>今天开始学Typescript</description><pubDate>Sun, 20 Sep 2026 16:07:40 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天我们来学typescript&quot;&gt;今天我们来学Typescript&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天我们来学typescript&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;学习资料来源&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ts.xcatliu.com/introduction/what-is-typescript.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://ts.xcatliu.com/introduction/what-is-typescript.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wangdoc.com/typescript/intro&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://wangdoc.com/typescript/intro&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.runoob.com/typescript/ts-install.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.runoob.com/typescript/ts-install.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.typescriptlang.org/zh/docs/handbook/tsconfig-json.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.typescriptlang.org/zh/docs/handbook/tsconfig-json.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;官方定义&quot;&gt;官方定义&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#官方定义&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;*TypeScript*&lt;/strong&gt;&lt;/em&gt;（简称 &lt;strong&gt;TS&lt;/strong&gt;）是由微软开发并开源的编程语言，它是 JavaScript 的一个超集，为代码添加了&lt;strong&gt;可选的静态类型检查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;核心特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JavaScript 的超集&lt;/strong&gt;：所有合法的 JavaScript 代码都已经是合法的 TypeScript 代码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;静态类型检查&lt;/strong&gt;：在代码运行之前（编译阶段），就能帮你发现拼写错误、类型不匹配等问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最终编译为 JS&lt;/strong&gt;：浏览器和 Node.js 无法直接运行 TS 代码，它需要通过编译器（&lt;code&gt;tsc&lt;/code&gt;）转译成纯 JavaScript 后再执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完全兼容&lt;/strong&gt;：100% 兼容现有的 JavaScript 生态和库&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么使用 TypeScript？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;提前报错&lt;/strong&gt;：不用等到代码运行或上线，在编辑器（如 VS Code）里写代码时就能实时看到错误提示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大型项目友好&lt;/strong&gt;：面对复杂的代码库，类型定义让代码结构更清晰，重构和维护更安全&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能提示&lt;/strong&gt;：编辑器能根据类型准确提示对象的属性和函数的参数，提高开发效率&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;安装typescript&quot;&gt;安装Typescript&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装typescript&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;再开始前确保已经安装&lt;a href=&quot;https://nodejs.org/zh-cn/download&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;nodejs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完成后验证&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;node &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
npm &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;通过npm安装Typescript&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm install &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g typescript
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;验证&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;tsc &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
&lt;span class=&quot;token comment&quot;&gt;#或者&lt;/span&gt;
tsc &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;以上命令会在全局环境下安装 &lt;code&gt;tsc&lt;/code&gt; 命令，安装完成之后，我们就可以在任何地方执行 &lt;code&gt;tsc&lt;/code&gt; 命令了&lt;/p&gt;
&lt;h3 id=&quot;运行typescript代码&quot;&gt;运行typescript代码&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#运行typescript代码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;例如我们写一个hello.ts(和JavaScript一样,Typescript代码末尾的&lt;code&gt;;&lt;/code&gt;号可加可不加,这里为了保持C#习惯我还是加吧)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;typescript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-typescript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; message&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token builtin&quot;&gt;console&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到typescript在变量后使用&lt;code&gt;:&lt;/code&gt;声明数据类型,比如我们当前的message就是&lt;code&gt;Hello, World!&lt;/code&gt;即string字符串类型&lt;/p&gt;
&lt;p&gt;当然也可以不写,因为typescript会自己推断&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当然函数也是在参数括号右边声明类型&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;typescript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-typescript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;number&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token builtin&quot;&gt;string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;编译单个脚本&quot;&gt;编译单个脚本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#编译单个脚本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;编译一个 TypeScript 文件很简单：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;tsc hello.ts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们约定使用 TypeScript 编写的文件以 &lt;code&gt;.ts&lt;/code&gt; 为后缀，用 TypeScript 编写 React 时，以 &lt;code&gt;.tsx&lt;/code&gt; 为后缀&lt;/p&gt;
&lt;p&gt;然后就会发现在根目录生成了一个同名js文件,只是少了类型&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;javascript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;use strict&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; message &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时可以使用&lt;code&gt;node hello.js&lt;/code&gt;运行js得到&lt;strong&gt;Hello, World!&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;node hello&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;由此我们可以发现typescript自己无法运行代码内容本身,而是先通过tsc编译器转换为JavaScript后使用nodejs运行&lt;/p&gt;
&lt;p&gt;即typescript只在编译时检查类型,转换为JavaScript后就不管了&lt;/p&gt;
&lt;h4 id=&quot;编译多个脚本&quot;&gt;编译多个脚本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#编译多个脚本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;同样的tsc可以编译多个脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;tsc hello&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ts hello01&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ts hello02&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;编译完成会生成3个同名js文件即&lt;code&gt;hello.js&lt;/code&gt;,&lt;code&gt;hello01.js&lt;/code&gt;,&lt;code&gt;hello02.js&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;tsc参数&quot;&gt;tsc参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#tsc参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;其实就是tsc cli命令,详见&lt;a href=&quot;https://www.typescriptlang.org/docs/handbook/compiler-options.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;typescript官方文档&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;或者在终端使用help命令查看所有tsc命令&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;tsc &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;help
&lt;span class=&quot;token comment&quot;&gt;#或者&lt;/span&gt;
tsc &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;h
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中有部分命令在我们tsc 7.0.2版本已被移除&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;













































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;已移除选项&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;功能说明&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;推荐迁移方案&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;target: &quot;es5&quot;&lt;/code&gt;&lt;/strong&gt; (及 &lt;code&gt;es3&lt;/code&gt;)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;编译输出 ES5 代码，用于兼容 IE 等老旧浏览器&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;升级 &lt;code&gt;target&lt;/code&gt; 至 &lt;code&gt;es2015&lt;/code&gt; 或更高；若仍需 ES5 产物，需配合 Babel/esbuild 二次转译&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;outFile&lt;/code&gt;&lt;/strong&gt; (及旧别名 &lt;code&gt;--out&lt;/code&gt;)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;TS 内置的多文件拼接单输出&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;改用 Webpack/Vite/esbuild/Rollup 等专业打包工具&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;moduleResolution: &quot;node&quot;&lt;/code&gt; / &lt;code&gt;&quot;node10&quot;&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;旧版 Node 模块解析逻辑，不兼容新版 ESM/exports&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Node 项目改用 &lt;code&gt;nodenext&lt;/code&gt;；打包/Vite/Bun 项目改用 &lt;code&gt;bundler&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;moduleResolution: &quot;classic&quot;&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;TypeScript 初代模块解析算法，无现代使用场景&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;统一改用 &lt;code&gt;nodenext&lt;/code&gt; 或 &lt;code&gt;bundler&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;module: &quot;amd&quot;&lt;/code&gt; / &lt;code&gt;&quot;umd&quot;&lt;/code&gt; / &lt;code&gt;&quot;systemjs&quot;&lt;/code&gt; / &lt;code&gt;&quot;none&quot;&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;老式浏览器模块化方案&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;改用 &lt;code&gt;esnext&lt;/code&gt;，输出格式由打包工具处理&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;baseUrl&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;路径映射的根目录，易产生意外模块匹配&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;将所有 &lt;code&gt;paths&lt;/code&gt; 路径改为相对于项目根目录的完整前缀&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;downlevelIteration&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;仅为 ES5 提供迭代器垫片，无 ES5 时无作用&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，ES2015+ 原生支持迭代&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;esModuleInterop: false&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;关闭 ESM 与 CommonJS 互兼容逻辑&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;强制永久为 &lt;code&gt;true&lt;/code&gt;，不可关闭。需修正导入写法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;allowSyntheticDefaultImports: false&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;禁止合成默认导入&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;强制永久为 &lt;code&gt;true&lt;/code&gt;，不可关闭。统一标准导入语法&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;alwaysStrict: false&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;关闭 JS 严格模式解析&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;强制永久为 &lt;code&gt;true&lt;/code&gt;，不可关闭。需重命名 &lt;code&gt;await&lt;/code&gt;/&lt;code&gt;static&lt;/code&gt;/&lt;code&gt;private&lt;/code&gt; 等保留字变量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;importsNotUsedAsValues&lt;/code&gt;&lt;/strong&gt; / &lt;strong&gt;&lt;code&gt;preserveValueImports&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制类型导入的保留行为&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;改用 &lt;code&gt;&quot;verbatimModuleSyntax&quot;: true&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;ignoreDeprecations&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;TS5/6 中用于屏蔽废弃警告的“逃生舱”&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;彻底移除，所有废弃选项在 7.0 中均变为硬错误&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;charset&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;指定源文件字符集（已无实际作用）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，编译器默认使用 UTF-8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;keyofStringsOnly&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制 &lt;code&gt;keyof&lt;/code&gt; 仅返回字符串键&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，使用 &lt;code&gt;keyof T &amp;#x26; string&lt;/code&gt; 替代&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;noImplicitUseStrict&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制是否自动添加 &lt;code&gt;&quot;use strict&quot;&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，严格模式已由 &lt;code&gt;strict&lt;/code&gt; 统一管理&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;suppressExcessPropertyErrors&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;抑制对象字面量的多余属性检查&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，推荐使用 &lt;code&gt;--exactOptionalPropertyTypes&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;suppressImplicitAnyIndexErrors&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;抑制隐式 &lt;code&gt;any&lt;/code&gt; 索引错误&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除，开启 &lt;code&gt;strict&lt;/code&gt; 后由类型系统统一处理&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;noStrictGenericChecks&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;关闭泛型严格检查&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接删除&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;prepend: true&lt;/code&gt;&lt;/strong&gt; (项目引用)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;在项目引用中前置输出&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;彻底移除，输出前置功能自 TS6 起已消失&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;&lt;code&gt;/// &amp;#x3C;reference no-default-lib=&quot;true&quot;/&gt;&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制内置标准库加载的三斜杠指令&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;指令失效，改用 &lt;code&gt;--noLib&lt;/code&gt; / &lt;code&gt;libReplacement&lt;/code&gt; 配置&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content:encoded><category>Typescript</category><category>Typescript</category></item><item><title>MarkDown元数据说明</title><link>https://huyangpahuo.vercel.app/posts/markdown-meta-data/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/markdown-meta-data/</guid><description>展示 Markdown 元数据的使用方法</description><pubDate>Thu, 17 Sep 2026 00:06:34 GMT</pubDate><content:encoded>&lt;h2 id=&quot;文章-frontmatter&quot;&gt;文章 Frontmatter&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#文章-frontmatter&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;字段&lt;/th&gt;&lt;th&gt;是否必填&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;&quot;example&quot;&lt;/td&gt;&lt;td&gt;文章标题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;slug&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;example&lt;/td&gt;&lt;td&gt;运行时自动生成，可手动填写，使用&lt;code&gt;-&lt;/code&gt;分隔单词&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;index&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;默认为0不置顶，大于0的整数置顶，数值越大越靠前&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;&quot;展示 Markdown 语法的各种类型和示例&quot;&lt;/td&gt;&lt;td&gt;文章描述&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;category&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;&quot;示例&quot;&lt;/td&gt;&lt;td&gt;文章分类&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;[Markdown]&lt;/td&gt;&lt;td&gt;文章标签，多个标签用逗号隔开&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;published&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是&lt;/td&gt;&lt;td&gt;2026-01-01 00:01:02&lt;/td&gt;&lt;td&gt;文章发布时间，格式为&lt;code&gt;YYYY-MM-DD HH:mm:ss&lt;/code&gt;，脚本生成自带&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;updated&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;2026-01-01 00:01:03&lt;/td&gt;&lt;td&gt;文章更新时间，格式为&lt;code&gt;YYYY-MM-DD HH:mm:ss&lt;/code&gt;，不自动生成&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;&lt;td&gt;否&lt;/td&gt;&lt;td&gt;false&lt;/td&gt;&lt;td&gt;是否草稿，不自动生成&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;请根据以上表格，填写文章的 Frontmatter。&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Markdown</category><category>Markdown</category></item><item><title>Markdown语法样例</title><link>https://huyangpahuo.vercel.app/posts/markdown-yu-fa-yang-li/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/markdown-yu-fa-yang-li/</guid><description>展示 Markdown 语法的各种类型和示例</description><pubDate>Wed, 16 Sep 2026 00:44:37 GMT</pubDate><content:encoded>&lt;h2 id=&quot;1-标题&quot;&gt;1. 标题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-标题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; 一级标题&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;##&lt;/span&gt; 二级标题&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;###&lt;/span&gt; 三级标题&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;####&lt;/span&gt; 四级标题&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#####&lt;/span&gt; 五级标题&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;######&lt;/span&gt; 六级标题&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;h3 id=&quot;三级标题&quot;&gt;三级标题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三级标题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;四级标题&quot;&gt;四级标题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#四级标题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;五级标题&quot;&gt;五级标题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#五级标题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;h6 id=&quot;六级标题&quot;&gt;六级标题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#六级标题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h6&gt;
&lt;blockquote&gt;
&lt;p&gt;悬停标题会显示 &lt;code&gt;#&lt;/code&gt; 锚点，点击可跳转到该标题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;2-段落与换行&quot;&gt;2. 段落与换行&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-段落与换行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;这是第一段。  
这是第二段（行尾加两个空格实现换行）。

这是新段落（空一行分隔）。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;这是第一段。&lt;br&gt;
这是第二段（行尾加两个空格实现换行）。&lt;/p&gt;
&lt;p&gt;这是新段落（空一行分隔）。&lt;/p&gt;
&lt;h2 id=&quot;3-文字强调&quot;&gt;3. 文字强调&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-文字强调&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token italic&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;斜体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;*&lt;/span&gt;&lt;/span&gt; 或 &lt;span class=&quot;token italic&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;斜体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;粗体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; 或 &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;__&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;粗体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;__&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;&lt;span class=&quot;token italic&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;粗斜体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;**&lt;/span&gt;&lt;/span&gt; 或 &lt;span class=&quot;token bold&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;__&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;&lt;span class=&quot;token italic&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;粗斜体&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;_&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;__&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token strike&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;~~&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;删除线&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;~~&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token strike&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;~&lt;/span&gt;&lt;span class=&quot;token content&quot;&gt;单波浪删除线&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;~&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;em&gt;斜体&lt;/em&gt; 或 &lt;em&gt;斜体&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;粗体&lt;/strong&gt; 或 &lt;strong&gt;粗体&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;粗斜体&lt;/strong&gt;&lt;/em&gt; 或 &lt;em&gt;&lt;strong&gt;粗斜体&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;del&gt;删除线&lt;/del&gt;&lt;br&gt;
&lt;del&gt;单波浪删除线&lt;/del&gt;&lt;/p&gt;
&lt;h2 id=&quot;4-列表&quot;&gt;4. 列表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-列表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;无序列表&quot;&gt;无序列表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#无序列表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; 项目1
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; 项目2
  &lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; 嵌套项目（缩进2或4个空格）
&lt;span class=&quot;token list punctuation&quot;&gt;*&lt;/span&gt; 也可以用星号
&lt;span class=&quot;token list punctuation&quot;&gt;+&lt;/span&gt; 或者加号
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目1&lt;/li&gt;
&lt;li&gt;项目2
&lt;ul&gt;
&lt;li&gt;嵌套项目（缩进2或4个空格）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;也可以用星号&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;或者加号&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;有序列表&quot;&gt;有序列表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#有序列表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; 第一项
&lt;span class=&quot;token list punctuation&quot;&gt;2.&lt;/span&gt; 第二项
   &lt;span class=&quot;token list punctuation&quot;&gt;1.&lt;/span&gt; 嵌套有序项（缩进）
&lt;span class=&quot;token list punctuation&quot;&gt;3.&lt;/span&gt; 第三项
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;第一项&lt;/li&gt;
&lt;li&gt;第二项
&lt;ol&gt;
&lt;li&gt;嵌套有序项（缩进）&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;任务列表&quot;&gt;任务列表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#任务列表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; [x] 已完成任务
&lt;span class=&quot;token list punctuation&quot;&gt;-&lt;/span&gt; [ ] 未完成任务
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; 已完成任务&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; 未完成任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;5-链接&quot;&gt;5. 链接&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5-链接&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token url&quot;&gt;[&lt;span class=&quot;token content&quot;&gt;行内链接&lt;/span&gt;](&lt;span class=&quot;token url&quot;&gt;https://example.com&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;可选标题&quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span class=&quot;token url&quot;&gt;[&lt;span class=&quot;token content&quot;&gt;引用式链接&lt;/span&gt;][&lt;span class=&quot;token variable&quot;&gt;引用&lt;/span&gt;]&lt;/span&gt;
文章末尾添加：&lt;span class=&quot;token url-reference url&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;引用&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; https://example.com &lt;span class=&quot;token string&quot;&gt;&quot;标题&quot;&lt;/span&gt;&lt;/span&gt; 
[空链接]&amp;#x3C;&gt; 或 &amp;#x3C;https://example.com&gt;（自动链接）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://example.com&quot; title=&quot;可选标题&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;行内链接&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://example.com&quot; title=&quot;标题&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;引用式链接&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://example.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://example.com&lt;/a&gt;（自动链接）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;外部链接自动在新窗口打开。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;6-图片&quot;&gt;6. 图片&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6-图片&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;[&lt;span class=&quot;token content&quot;&gt;替代文字&lt;/span&gt;](&lt;span class=&quot;token url&quot;&gt;https://xxxxx&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;可选标题&quot;&lt;/span&gt;)&lt;/span&gt;
&lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;[&lt;span class=&quot;token content&quot;&gt;引用式图片&lt;/span&gt;][&lt;span class=&quot;token variable&quot;&gt;img&lt;/span&gt;]&lt;/span&gt;
&lt;span class=&quot;token url-reference url&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; https://xxxxx &lt;span class=&quot;token string&quot;&gt;&quot;标题&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token title important&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;#&lt;/span&gt; 或者本地图片&lt;/span&gt;
&lt;span class=&quot;token url&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;[&lt;span class=&quot;token content&quot;&gt;本地图片&lt;/span&gt;](&lt;span class=&quot;token url&quot;&gt;../images/logo.webp&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;本地图片&quot;&lt;/span&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;img-frame&quot; style=&quot;--img-lqip:linear-gradient(135deg, #632d1b 0%, #6a301b 50%, #582816 100%)&quot;&gt;&lt;a class=&quot;img-lightbox&quot; href=&quot;https://huyangpahuo.vercel.app/content-images/883d9fc6f4cc516e.webp&quot; title=&quot;可选标题&quot; data-pswp-width=&quot;512&quot; data-pswp-height=&quot;512&quot;&gt;&lt;img src=&quot;https://huyangpahuo.vercel.app/content-images/883d9fc6f4cc516e.webp&quot; alt=&quot;替代文字&quot; title=&quot;可选标题&quot; loading=&quot;eager&quot; fetchpriority=&quot;high&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;点击图片可打开灯箱放大预览。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;7-引用块&quot;&gt;7. 引用块&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#7-引用块&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token blockquote punctuation&quot;&gt;&gt;&lt;/span&gt; 这是一段引用。
&lt;span class=&quot;token blockquote punctuation&quot;&gt;&gt;&lt;/span&gt; 可以跨多行。
&lt;span class=&quot;token blockquote punctuation&quot;&gt;&gt;&gt;&lt;/span&gt; 嵌套引用。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这是一段引用。&lt;br&gt;
可以跨多行。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;嵌套引用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;8-代码&quot;&gt;8. 代码&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#8-代码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;行内代码&quot;&gt;行内代码&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#行内代码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;使用 &lt;span class=&quot;token code-snippet code keyword&quot;&gt;`print()`&lt;/span&gt; 函数输出。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：使用 &lt;code&gt;print()&lt;/code&gt; 函数输出。&lt;/p&gt;
&lt;h3 id=&quot;代码块&quot;&gt;代码块&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#代码块&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token code&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;
&lt;span class=&quot;token code-block&quot;&gt;普通代码块&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token code&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;&lt;span class=&quot;token code-language&quot;&gt;python&lt;/span&gt;
&lt;span class=&quot;token code-block language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 语法高亮&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;&lt;/span&gt;
缩进4个空格或一个制表符：
    def foo():
        return &quot;bar&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;普通代码块
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;python&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 语法高亮&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello, World!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;diff-高亮&quot;&gt;diff 高亮&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#diff-高亮&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token code&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;&lt;span class=&quot;token code-language&quot;&gt;diff&lt;/span&gt;
&lt;span class=&quot;token code-block language-diff&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; 新增的行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; 删除的行&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;```&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;diff&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-diff&quot;&gt;&lt;span class=&quot;token inserted-sign inserted&quot;&gt;&lt;span class=&quot;token prefix inserted&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; 新增的行
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token deleted-sign deleted&quot;&gt;&lt;span class=&quot;token prefix deleted&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token line&quot;&gt; 删除的行
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;注意：代码块自带行号、复制按钮与语言标识；支持 python / bash / go / rust / sql / diff 等常用语言，未知语言按纯文本渲染。请勿使用缩进4个空格或一个制表符来创建代码块，因为不会显示。&lt;/p&gt;
&lt;h2 id=&quot;9-水平线&quot;&gt;9. 水平线&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#9-水平线&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;--- 或 *** 或 ___
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;---&lt;/code&gt;：&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;code&gt;***&lt;/code&gt;：&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;code&gt;___&lt;/code&gt;：&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-表格&quot;&gt;10. 表格&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#10-表格&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token table&quot;&gt;&lt;span class=&quot;token table-header-row&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-header important&quot;&gt; 左对齐------ &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-header important&quot;&gt; ------居中------ &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-header important&quot;&gt; ------右对齐 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;token table-line&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:-------&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:----:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;-------:&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;token table-data-rows&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;token table-data&quot;&gt; 单元格 &lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;左对齐------&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;------居中------&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;------右对齐&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;单元格&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;单元格&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;单元格&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;单元格&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;单元格&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;单元格&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;11-脚注&quot;&gt;11. 脚注&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#11-脚注&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;这是一个句子[^1]。
&lt;span class=&quot;token url-reference url&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;^1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 脚注内容。&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;这是一个句子&lt;sup&gt;&lt;a href=&quot;#post-fn-1&quot; id=&quot;post-fnref-1&quot; data-footnote-ref=&quot;&quot; aria-describedby=&quot;footnote-label&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;h2 id=&quot;12-提示容器&quot;&gt;12. 提示容器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#12-提示容器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;:::tip 提示标题
这是一个提示容器。
:::

:::warning
支持 info / tip / warning / danger / details 五种类型。
:::

:::details 点击展开
details 容器默认折叠，点击标题展开。
:::
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;div class=&quot;md-container md-container-tip&quot;&gt;&lt;p class=&quot;md-container-title&quot;&gt;提示标题&lt;/p&gt;&lt;p&gt;这是一个提示容器。&lt;/p&gt;&lt;/div&gt;
&lt;div class=&quot;md-container md-container-warning&quot;&gt;&lt;p class=&quot;md-container-title&quot;&gt;warning&lt;/p&gt;&lt;p&gt;支持 info / tip / warning / danger / details 五种类型。&lt;/p&gt;&lt;/div&gt;
&lt;details class=&quot;md-container md-container-details&quot;&gt;&lt;summary class=&quot;md-container-title&quot;&gt;点击展开&lt;/summary&gt;&lt;div class=&quot;md-container-body&quot;&gt;&lt;p&gt;details 容器默认折叠，点击标题展开。&lt;/p&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h2 id=&quot;13-内联-html&quot;&gt;13. 内联 HTML&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#13-内联-html&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;kbd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Ctrl&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;/&lt;/span&gt;kbd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; + &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;kbd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;C&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;/&lt;/span&gt;kbd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;  
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;span&lt;/span&gt; &lt;span class=&quot;token special-attr&quot;&gt;&lt;span class=&quot;token attr-name&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token value css language-css&quot;&gt;&lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;红色文字&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;/&lt;/span&gt;span&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt; + &lt;kbd&gt;C&lt;/kbd&gt;&lt;br&gt;
&lt;span style=&quot;color:red;&quot;&gt;红色文字&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;14-转义字符&quot;&gt;14. 转义字符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#14-转义字符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;\*不会变成斜体\*
\# 不是标题
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;*不会变成斜体*&lt;br&gt;
# 不是标题&lt;/p&gt;
&lt;h2 id=&quot;15-表情符号&quot;&gt;15. 表情符号&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#15-表情符号&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;:smile: :heart: :+1:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;😄 ❤️ 👍&lt;/p&gt;
&lt;h2 id=&quot;16-自动链接&quot;&gt;16. 自动链接&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#16-自动链接&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;#x3C;https://example.com&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;user@example.com&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
www.example.com（GFM 自动识别）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://example.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://example.com&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;mailto:user@example.com&quot;&gt;user@example.com&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://www.example.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;www.example.com&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;17-数学公式&quot;&gt;17. 数学公式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#17-数学公式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M20.56 18H3.44C2.65 18 2 17.37 2 16.59V7.41C2 6.63 2.65 6 3.44 6H20.56C21.35 6 22 6.63 22 7.41V16.59C22 17.37 21.35 18 20.56 18M6.81 15.19V11.53L8.73 13.88L10.65 11.53V15.19H12.58V8.81H10.65L8.73 11.16L6.81 8.81H4.89V15.19H6.81M19.69 12H17.77V8.81H15.85V12H13.92L16.81 15.28L19.69 12Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;markdown&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-markdown&quot;&gt;$E=mc^2$
$$
\int_{a}^{b} f(x) dx
$$
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;E&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;msup&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;E=mc^2&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0576em;&quot;&gt;E&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;m&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span class=&quot;katex-display&quot;&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msubsup&gt;&lt;mo&gt;∫&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/msubsup&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\int_{a}^{b} f(x) dx&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:2.511em;vertical-align:-0.9119em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mop&quot;&gt;&lt;span class=&quot;mop op-symbol large-op&quot; style=&quot;margin-right:0.4445em;position:relative;top:-0.0011em;&quot;&gt;∫&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.599em;&quot;&gt;&lt;span style=&quot;top:-1.7881em;margin-left:-0.4445em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.8129em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.9119em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1076em;&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;mopen&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;section data-footnotes=&quot;&quot; class=&quot;footnotes&quot;&gt;&lt;h2 class=&quot;sr-only&quot; id=&quot;footnote-label&quot;&gt;footnote&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#footnote-label&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li id=&quot;post-fn-1&quot;&gt;
&lt;p&gt;脚注内容。 &lt;a href=&quot;#post-fnref-1&quot; data-footnote-backref=&quot;&quot; aria-label=&quot;Back to reference 1&quot; class=&quot;data-footnote-backref&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded><category>Markdown</category><category>Markdown</category></item><item><title>Windows光标包转网页动画光标skill</title><link>https://huyangpahuo.vercel.app/posts/windows-guang-biao-bao-zhuan-wang-ye-dong-hua-guang-biao-skill/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/windows-guang-biao-bao-zhuan-wang-ye-dong-hua-guang-biao-skill/</guid><description>制作了一个skill用于把Windows光标包转网页动画光标</description><pubDate>Mon, 14 Sep 2026 01:49:16 GMT</pubDate><content:encoded>&lt;h1 id=&quot;windows光标包转网页动画光标skill&quot;&gt;Windows光标包转网页动画光标skill&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#windows光标包转网页动画光标skill&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;前往我的&lt;a href=&quot;https://github.com/huyangpahuo/web-cursor-converter-skill&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Github仓库&lt;/a&gt;下载&lt;/p&gt;
&lt;p&gt;把网上下载的 Windows 光标包(&lt;code&gt;.ani&lt;/code&gt; 动画 / &lt;code&gt;.cur&lt;/code&gt; 静态)转换成浏览器可用的动画鼠标指针&lt;/p&gt;
&lt;p&gt;即逐帧抽成 PNG + 热点坐标 + &lt;code&gt;data.js&lt;/code&gt; 清单,配合 skill 自带的 CSS/JS 模板用 CSS 变量逐帧播放(浏览器原生不支持 .ani 动画光标)&lt;/p&gt;
&lt;p&gt;放入当前项目的 &lt;code&gt;.agents/skills/&lt;/code&gt; 目录(放用户目录 &lt;code&gt;~/.agents/skills/&lt;/code&gt; 则全局可用)&lt;/p&gt;
&lt;p&gt;然后对 AI 说&quot;把 XXX 光标包做成网页鼠标指针&quot;即可&lt;/p&gt;</content:encoded><category>软件推荐</category><category>Skill</category></item><item><title>配置Twikoo的Telegram消息推送</title><link>https://huyangpahuo.vercel.app/posts/pei-zhi-twikoo-de-telegram-xiao-xi-tui-song/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/pei-zhi-twikoo-de-telegram-xiao-xi-tui-song/</guid><description>本文介绍Twikoo的消息推送(以Telegram为例)</description><pubDate>Sun, 13 Sep 2026 22:16:17 GMT</pubDate><content:encoded>&lt;h1 id=&quot;关于twikoo评论我一般看不到大家发了什么所以试试telegram推送吧&quot;&gt;关于twikoo评论我一般看不到大家发了什么,所以试试Telegram推送吧&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关于twikoo评论我一般看不到大家发了什么所以试试telegram推送吧&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;首先我们需要知道twikoo使用了&lt;a href=&quot;https://pushoo.js.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;pushoo&lt;/a&gt;来推送消息&lt;/p&gt;
&lt;p&gt;支持各种平台,包括Telegram,QQ等等&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913222252745.webp&quot; alt=&quot;image-20260913222252745&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;获取token&quot;&gt;获取token&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#获取token&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913222420147.webp&quot; alt=&quot;image-20260913222420147&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913222445047.webp&quot; alt=&quot;image-20260913222445047&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;就是如上所说把 @BotFather的token和 @userinfobot的id用  #拼在一起即&lt;code&gt;token#id&lt;/code&gt;模式&lt;/p&gt;
&lt;h2 id=&quot;关闭vercel的登录验证&quot;&gt;关闭vercel的登录验证&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关闭vercel的登录验证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果你是和我一样用vercel部署的twikoo就需要关闭此项,否则会被vercel拦截 tg 机器人的推送&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913222938520.webp&quot; alt=&quot;image-20260913222938520&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;打开twikoo设置面板&quot;&gt;打开twikoo设置面板&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#打开twikoo设置面板&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913223145007.webp&quot; alt=&quot;image-20260913223145007&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们发一条测试&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913223241896.webp&quot; alt=&quot;image-20260913223241896&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时Telegram机器人就给我们推送消息了,非常nice&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%85%8D%E7%BD%AETwikoo%E7%9A%84Telegram%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81/image-20260913223329782.webp&quot; alt=&quot;image-20260913223329782&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Telegram</category><category>Twikoo</category></item><item><title>购买阿里云68一年的服务器</title><link>https://huyangpahuo.vercel.app/posts/gou-mai-a-li-yun-68-yi-nian-de-fu-wu-qi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/gou-mai-a-li-yun-68-yi-nian-de-fu-wu-qi/</guid><description>本篇是购买阿里云小服务器的过程</description><pubDate>Fri, 11 Sep 2026 10:14:23 GMT</pubDate><content:encoded>&lt;h1 id=&quot;如题不过我买的时候买早了导致我目前将近一个多月都没用&quot;&gt;如题,不过我买的时候买早了,导致我目前将近一个多月都没用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#如题不过我买的时候买早了导致我目前将近一个多月都没用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;我挑选的是菲律宾马尼拉地区并预装Docker&lt;/p&gt;
&lt;p&gt;​		&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%9168%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8/image-20260911101829768.webp&quot; alt=&quot;image-20260911101829768&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;到手之后由于我不喜欢它自带的那个远程连接workbench的界面所以用termius连接吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%9168%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8/image-20260911102237688.webp&quot; alt=&quot;image-20260911102237688&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;然后先查看真实配置&quot;&gt;然后先查看真实配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后先查看真实配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;lscpu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到cpu信息如下,确实是2核&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;Architecture:        x86_64
CPU op-mode&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:      &lt;span class=&quot;token number&quot;&gt;32&lt;/span&gt;-bit, &lt;span class=&quot;token number&quot;&gt;64&lt;/span&gt;-bit
Byte Order:          Little Endian
CPU&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:              &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
On-line CPU&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; list: &lt;span class=&quot;token number&quot;&gt;0,1&lt;/span&gt;
Thread&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; per core:  &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;
Core&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; per socket:  &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
Socket&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:           &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
NUMA node&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:        &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
Vendor ID:           GenuineIntel
BIOS Vendor ID:      Alibaba Cloud
CPU family:          &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;
Model:               &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;
Model name:          Intel&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;R&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; Xeon&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;R&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; Platinum
BIOS Model name:     pc-i440fx-2.1
Stepping:            &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
CPU MHz:             &lt;span class=&quot;token number&quot;&gt;2499.998&lt;/span&gt;
BogoMIPS:            &lt;span class=&quot;token number&quot;&gt;4999.99&lt;/span&gt;
Hypervisor vendor:   KVM
Virtualization type: full
L1d cache:           32K
L1i cache:           32K
L2 cache:            1024K
L3 cache:            33792K
NUMA node0 CPU&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:   &lt;span class=&quot;token number&quot;&gt;0,1&lt;/span&gt;
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;然后查看内存&quot;&gt;然后查看内存&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后查看内存&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;确实是2G但是没有开swap缓存&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;              total        used        &lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;      shared  buff/cache   available
Mem:          &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.8Gi       291Mi       561Mi       &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;.0Mi       &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.0Gi       &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.4Gi
Swap:            0B          0B          0B
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;查看硬盘&quot;&gt;查看硬盘&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#查看硬盘&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;df&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-h&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;确实是40G&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        916M     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  916M   &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;% /dev
tmpfs           936M     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  936M   &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;% /dev/shm
tmpfs           936M  500K  936M   &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;% /run
tmpfs           936M     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  936M   &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;% /sys/fs/cgroup
/dev/vda3        40G  &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;.7G   31G  &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;% /
/dev/vda2       200M  &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;.8M  194M   &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;% /boot/efi
tmpfs           188M     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  188M   &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;% /run/user/1000
tmpfs           188M     &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;  188M   &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;% /run/user/0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;查看-linux-系统版本&quot;&gt;查看 Linux 系统版本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#查看-linux-系统版本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; /etc/os-release
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token assign-left variable&quot;&gt;NAME&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Alibaba Cloud Linux&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;VERSION&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;3 (OpenAnolis Edition)&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;alinux&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;ID_LIKE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;rhel fedora centos anolis&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;VERSION_ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;3&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;VARIANT&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;OpenAnolis Edition&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;VARIANT_ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;openanolis&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;ALINUX_MINOR_ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2104&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;ALINUX_UPDATE_ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;10&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;PLATFORM_ID&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;platform:al8&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;PRETTY_NAME&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Alibaba Cloud Linux 3.2104 U10 (OpenAnolis Edition)&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;ANSI_COLOR&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0;31&quot;&lt;/span&gt;
&lt;span class=&quot;token assign-left variable&quot;&gt;HOME_URL&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://www.aliyun.com/&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;查看监听端口&quot;&gt;查看监听端口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#查看监听端口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;ss &lt;span class=&quot;token parameter variable&quot;&gt;-lntp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;就是22端口&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port       Process                               
LISTEN       &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;128&lt;/span&gt;                      &lt;span class=&quot;token number&quot;&gt;0.0&lt;/span&gt;.0.0:22                    &lt;span class=&quot;token number&quot;&gt;0.0&lt;/span&gt;.0.0:*           users:&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&quot;sshd&quot;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;pid&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2721&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;fd&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;/span&gt;       
LISTEN       &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;            &lt;span class=&quot;token number&quot;&gt;128&lt;/span&gt;                         &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;::&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;:22                       &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;::&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;:*           users:&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;((&lt;/span&gt;&quot;sshd&quot;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;pid&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2721&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;fd&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;))&lt;/span&gt;&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;开启swap-2gb缓存并永久启用&quot;&gt;开启swap 2GB缓存并永久启用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#开启swap-2gb缓存并永久启用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; fallocate &lt;span class=&quot;token parameter variable&quot;&gt;-l&lt;/span&gt; 2G /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt; /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;mkswap&lt;/span&gt; /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;swapon&lt;/span&gt; /swapfile
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;/swapfile none swap sw 0 0&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt; /etc/fstab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检测是否开启&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;swapon&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--show&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME      TYPE SIZE USED PRIO
/swapfile &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt;   2G   0B   &lt;span class=&quot;token parameter variable&quot;&gt;-2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者也可以直接查看内存&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;free -h
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;              total        used        &lt;span class=&quot;token function&quot;&gt;free&lt;/span&gt;      shared  buff/cache   available
Mem:          &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.8Gi       288Mi       562Mi       &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.0Mi       &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.0Gi       &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;.4Gi
Swap:         &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;.0Gi          0B       &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;.0Gi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;ok,已开启&lt;/p&gt;
&lt;h2 id=&quot;防火墙&quot;&gt;防火墙&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#防火墙&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先看看防火墙状态,阿里云已经默认开了防火墙且已有几个端口添加自动添加了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%9168%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8/image-20260911104852900.webp&quot; alt=&quot;image-20260911104852900&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以无需操作,只需添加防火墙白名单即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%9168%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8/image-20260911110655086.webp&quot; alt=&quot;image-20260911110655086&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;缺点&quot;&gt;缺点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#缺点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;太慢了,造的VPN根本无法正常用,顶多只能浏览普通网站,无法看视频&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E8%B4%AD%E4%B9%B0%E9%98%BF%E9%87%8C%E4%BA%9168%E4%B8%80%E5%B9%B4%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8/image-20261012165448170.webp&quot; alt=&quot;image-20261012165448170&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以我们需要开启BBR拥塞算法&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;BBR只是优化不保证能够降低延迟,取决于服务器自身&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;启用-bbr-tcp-拥塞控制算法&quot;&gt;启用 BBR TCP 拥塞控制算法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启用-bbr-tcp-拥塞控制算法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先看看是否为BBR模式&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;sysctl net&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ipv4&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tcp_congestion_control net&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;core&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;default_qdisc 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;若显示的是&lt;code&gt;net.ipv4.tcp_congestion_control = cubic net.core.default_qdisc = fq_codel&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我们需要进一步操作启用BBR&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; &gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc/modules-load&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;d/tcp_bbr&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;conf &amp;#x3C;&amp;#x3C;&lt;span class=&quot;token string&quot;&gt;&apos;EOF&apos;&lt;/span&gt;
tcp_bbr
EOF

&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; &gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;etc/sysctl&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;d/99-bbr&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;conf &amp;#x3C;&amp;#x3C;&lt;span class=&quot;token string&quot;&gt;&apos;EOF&apos;&lt;/span&gt;
net&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;core&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;default_qdisc=fq
net&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ipv4&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tcp_congestion_control=bbr
EOF

sysctl &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;system
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们验证一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; sysctl net.ipv4.tcp_congestion_control net.core.default_qdisc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;若显示&lt;code&gt;net.ipv4.tcp_congestion_control = bbr net.core.default_qdisc = fq&lt;/code&gt;表示已开启&lt;/p&gt;</content:encoded><category>Linux</category><category>Aliyun</category><category>VPS</category></item><item><title>Zed的mcp安装</title><link>https://huyangpahuo.vercel.app/posts/zed-de-mcp-an-zhuang/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/zed-de-mcp-an-zhuang/</guid><description>安装一些mcp给zed</description><pubDate>Thu, 10 Sep 2026 20:56:26 GMT</pubDate><content:encoded>&lt;h1 id=&quot;zed插件市场有很多mcp&quot;&gt;Zed插件市场有很多MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#zed插件市场有很多mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;必装&quot;&gt;必装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#必装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;context7-mcp-server&quot;&gt;Context7 MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#context7-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 AI 获取当前版本的库/框架文档，而不是完全依赖模型训练数据&lt;/p&gt;
&lt;h3 id=&quot;github-mcp-server&quot;&gt;GitHub MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#github-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 Agent 更深入地使用 GitHub&lt;/p&gt;
&lt;h3 id=&quot;firecrawl-mcp-server&quot;&gt;Firecrawl MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#firecrawl-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 AI 更方便地抓取和理解真实网站&lt;/p&gt;
&lt;h3 id=&quot;puppeteer-mcp-server&quot;&gt;Puppeteer MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#puppeteer-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 Agent 操作真实浏览器&lt;/p&gt;
&lt;h2 id=&quot;看具体项目装&quot;&gt;看具体项目装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#看具体项目装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;framelink-figma-mcp-server&quot;&gt;Framelink Figma MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#framelink-figma-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 AI 理解 Figma 设计稿&lt;/p&gt;
&lt;h3 id=&quot;shadcnui-mcp&quot;&gt;shadcn/ui MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#shadcnui-mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 Agent 查询、浏览和安装 shadcn/ui 组件&lt;/p&gt;
&lt;h3 id=&quot;brave-search-mcp&quot;&gt;Brave Search MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#brave-search-mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;**用途：**让 Agent 使用搜索引擎搜索互联网&lt;/p&gt;
&lt;h3 id=&quot;exa-search--crawling-mcp&quot;&gt;Exa Search + Crawling MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#exa-search--crawling-mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;用途:&lt;/strong&gt; 也是搜索 + 网页抓取类型&lt;/p&gt;
&lt;h3 id=&quot;tavily-mcp&quot;&gt;Tavily MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#tavily-mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;同样属于 AI 搜索 / Web Research 类型&lt;/p&gt;
&lt;h2 id=&quot;数据库项目&quot;&gt;数据库项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#数据库项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;postgres-context-server&quot;&gt;Postgres Context Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#postgres-context-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;可以帮助 Agent 理解和操作 PostgreSQL 数据库&lt;/p&gt;
&lt;h3 id=&quot;supabase-mcp-server&quot;&gt;Supabase MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#supabase-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果使用 Supabase用这个&lt;/p&gt;
&lt;h3 id=&quot;prisma-context-server&quot;&gt;Prisma Context Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#prisma-context-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果以后使用：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Node.js
+
Prisma
+
PostgreSQL
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以安装&lt;/p&gt;
&lt;h2 id=&quot;cloudflare--云部署方向&quot;&gt;Cloudflare / 云部署方向&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#cloudflare--云部署方向&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;terraform-context-server&quot;&gt;Terraform Context Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#terraform-context-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Terraform 用于 Infrastructure as Code&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Cloudflare
AWS
Azure
服务器
数据库
网络
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;azure-context-server&quot;&gt;Azure Context Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#azure-context-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;azure相关用这个&lt;/p&gt;
&lt;h3 id=&quot;grafana-mcp-server&quot;&gt;Grafana MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#grafana-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用途：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;服务器
 ↓
Prometheus / Loki
 ↓
Grafana
 ↓
AI
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;datadog-mcp-server&quot;&gt;Datadog MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#datadog-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;企业监控 / DevOps 方向&lt;/p&gt;
&lt;h2 id=&quot;web-建站平台类&quot;&gt;Web 建站平台类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#web-建站平台类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;webflow-mcp-server&quot;&gt;Webflow MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#webflow-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用于 Webflow&lt;/p&gt;
&lt;h3 id=&quot;material-ui-mcp-server&quot;&gt;Material UI MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#material-ui-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果使用 Material UI可以考虑&lt;/p&gt;
&lt;h2 id=&quot;代码理解--coding-agent-增强&quot;&gt;代码理解 / Coding Agent 增强&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#代码理解--coding-agent-增强&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;serena-context-server&quot;&gt;Serena Context Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#serena-context-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;让 Coding Agent 更深入地理解代码结构&lt;/p&gt;
&lt;h3 id=&quot;sequential-thinking-mcp&quot;&gt;Sequential Thinking MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#sequential-thinking-mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;帮助 Agent 分解复杂任务&lt;/p&gt;
&lt;h3 id=&quot;container-use-mcp-server&quot;&gt;Container Use MCP Server&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#container-use-mcp-server&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用途是给 Agent 提供隔离的容器化开发环境&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Zed</category><category>MCP</category></item><item><title>love2d的skill和mcp推荐</title><link>https://huyangpahuo.vercel.app/posts/love2d-de-skill-he-mcp-tui-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/love2d-de-skill-he-mcp-tui-jian/</guid><description>在使用agent辅助love2d游戏制作时,可以用一些skill和mcp来让ai更符合项目规范和减少出错</description><pubDate>Wed, 09 Sep 2026 12:45:29 GMT</pubDate><content:encoded>&lt;h1 id=&quot;在使用agent辅助love2d游戏制作时可以用一些skill和mcp来让ai更符合项目规范和减少出错&quot;&gt;在使用agent辅助love2d游戏制作时,可以用一些skill和mcp来让ai更符合项目规范和减少出错&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#在使用agent辅助love2d游戏制作时可以用一些skill和mcp来让ai更符合项目规范和减少出错&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这里我用的agent是Zcode&lt;/p&gt;
&lt;h2 id=&quot;首先先下载mcp&quot;&gt;首先先下载mcp&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先先下载mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/shayarnett/love2d-mcp&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我们需要先克隆这个mcp到一个文件夹&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;git clone https:&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com/shayarnett/love2d-mcp&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;git
cd love2d-mcp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后安装依赖&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913231324641.webp&quot; alt=&quot;image-20260913231324641&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时启动构建服务器&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;找到mcp设置项添加mcp&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913231443258.webp&quot; alt=&quot;image-20260913231443258&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913231538003.webp&quot; alt=&quot;image-20260913231538003&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;显示绿点即接入成功&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913231610824.webp&quot; alt=&quot;image-20260913231610824&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;不过我们需要在代码层引入这个mcp&quot;&gt;不过我们需要在代码层引入这个MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#不过我们需要在代码层引入这个mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;mcp_bridgelua&quot;&gt;mcp_bridge.lua&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mcp_bridgelua&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;首先制作一个mcp_bridge.lua文件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;span&gt;191&lt;/span&gt;&lt;span&gt;192&lt;/span&gt;&lt;span&gt;193&lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;195&lt;/span&gt;&lt;span&gt;196&lt;/span&gt;&lt;span&gt;197&lt;/span&gt;&lt;span&gt;198&lt;/span&gt;&lt;span&gt;199&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;201&lt;/span&gt;&lt;span&gt;202&lt;/span&gt;&lt;span&gt;203&lt;/span&gt;&lt;span&gt;204&lt;/span&gt;&lt;span&gt;205&lt;/span&gt;&lt;span&gt;206&lt;/span&gt;&lt;span&gt;207&lt;/span&gt;&lt;span&gt;208&lt;/span&gt;&lt;span&gt;209&lt;/span&gt;&lt;span&gt;210&lt;/span&gt;&lt;span&gt;211&lt;/span&gt;&lt;span&gt;212&lt;/span&gt;&lt;span&gt;213&lt;/span&gt;&lt;span&gt;214&lt;/span&gt;&lt;span&gt;215&lt;/span&gt;&lt;span&gt;216&lt;/span&gt;&lt;span&gt;217&lt;/span&gt;&lt;span&gt;218&lt;/span&gt;&lt;span&gt;219&lt;/span&gt;&lt;span&gt;220&lt;/span&gt;&lt;span&gt;221&lt;/span&gt;&lt;span&gt;222&lt;/span&gt;&lt;span&gt;223&lt;/span&gt;&lt;span&gt;224&lt;/span&gt;&lt;span&gt;225&lt;/span&gt;&lt;span&gt;226&lt;/span&gt;&lt;span&gt;227&lt;/span&gt;&lt;span&gt;228&lt;/span&gt;&lt;span&gt;229&lt;/span&gt;&lt;span&gt;230&lt;/span&gt;&lt;span&gt;231&lt;/span&gt;&lt;span&gt;232&lt;/span&gt;&lt;span&gt;233&lt;/span&gt;&lt;span&gt;234&lt;/span&gt;&lt;span&gt;235&lt;/span&gt;&lt;span&gt;236&lt;/span&gt;&lt;span&gt;237&lt;/span&gt;&lt;span&gt;238&lt;/span&gt;&lt;span&gt;239&lt;/span&gt;&lt;span&gt;240&lt;/span&gt;&lt;span&gt;241&lt;/span&gt;&lt;span&gt;242&lt;/span&gt;&lt;span&gt;243&lt;/span&gt;&lt;span&gt;244&lt;/span&gt;&lt;span&gt;245&lt;/span&gt;&lt;span&gt;246&lt;/span&gt;&lt;span&gt;247&lt;/span&gt;&lt;span&gt;248&lt;/span&gt;&lt;span&gt;249&lt;/span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;251&lt;/span&gt;&lt;span&gt;252&lt;/span&gt;&lt;span&gt;253&lt;/span&gt;&lt;span&gt;254&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;257&lt;/span&gt;&lt;span&gt;258&lt;/span&gt;&lt;span&gt;259&lt;/span&gt;&lt;span&gt;260&lt;/span&gt;&lt;span&gt;261&lt;/span&gt;&lt;span&gt;262&lt;/span&gt;&lt;span&gt;263&lt;/span&gt;&lt;span&gt;264&lt;/span&gt;&lt;span&gt;265&lt;/span&gt;&lt;span&gt;266&lt;/span&gt;&lt;span&gt;267&lt;/span&gt;&lt;span&gt;268&lt;/span&gt;&lt;span&gt;269&lt;/span&gt;&lt;span&gt;270&lt;/span&gt;&lt;span&gt;271&lt;/span&gt;&lt;span&gt;272&lt;/span&gt;&lt;span&gt;273&lt;/span&gt;&lt;span&gt;274&lt;/span&gt;&lt;span&gt;275&lt;/span&gt;&lt;span&gt;276&lt;/span&gt;&lt;span&gt;277&lt;/span&gt;&lt;span&gt;278&lt;/span&gt;&lt;span&gt;279&lt;/span&gt;&lt;span&gt;280&lt;/span&gt;&lt;span&gt;281&lt;/span&gt;&lt;span&gt;282&lt;/span&gt;&lt;span&gt;283&lt;/span&gt;&lt;span&gt;284&lt;/span&gt;&lt;span&gt;285&lt;/span&gt;&lt;span&gt;286&lt;/span&gt;&lt;span&gt;287&lt;/span&gt;&lt;span&gt;288&lt;/span&gt;&lt;span&gt;289&lt;/span&gt;&lt;span&gt;290&lt;/span&gt;&lt;span&gt;291&lt;/span&gt;&lt;span&gt;292&lt;/span&gt;&lt;span&gt;293&lt;/span&gt;&lt;span&gt;294&lt;/span&gt;&lt;span&gt;295&lt;/span&gt;&lt;span&gt;296&lt;/span&gt;&lt;span&gt;297&lt;/span&gt;&lt;span&gt;298&lt;/span&gt;&lt;span&gt;299&lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt;301&lt;/span&gt;&lt;span&gt;302&lt;/span&gt;&lt;span&gt;303&lt;/span&gt;&lt;span&gt;304&lt;/span&gt;&lt;span&gt;305&lt;/span&gt;&lt;span&gt;306&lt;/span&gt;&lt;span&gt;307&lt;/span&gt;&lt;span&gt;308&lt;/span&gt;&lt;span&gt;309&lt;/span&gt;&lt;span&gt;310&lt;/span&gt;&lt;span&gt;311&lt;/span&gt;&lt;span&gt;312&lt;/span&gt;&lt;span&gt;313&lt;/span&gt;&lt;span&gt;314&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- MCP Bridge - TCP server for communicating with MCP server&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; socket &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;socket&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; mcp_bridge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; server &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; clients &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; objectGetter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Initialize TCP server&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;port&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    server &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;assert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;socket&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;tcp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    server&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;bind&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    server&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;listen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    server&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;settimeout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- Non-blocking&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;MCP Bridge listening on port &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; port&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Set function to get game objects&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setObjectGetter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;getter&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    objectGetter &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; getter
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Handle incoming connections and commands&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; server &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Accept new clients&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; client &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; server&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;accept&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; client &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;settimeout&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clients&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; client&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;MCP client connected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Handle existing clients&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;clients&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; client &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; clients&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; line&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;receive&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;*l&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; line &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;-- Process command&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; success&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pcall&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;handleCommand&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; success &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
                client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;send&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;closed&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;-- Client disconnected&lt;/span&gt;
            client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clients&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;MCP client disconnected&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;-- err == &quot;timeout&quot; means no data available, continue&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Handle a command from MCP server&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;handleCommand&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; command &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;decode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;command &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;list_objects&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;listObjects&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;command &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;get_object&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getObject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;command &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;run_lua&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;runLua&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Unknown command: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;command&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;command&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- List all objects&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;listObjects&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; objectGetter &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;No object getter configured&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; objects &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;objectGetter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; obj &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;objects&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            id &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;type&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            x &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            y &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;objects &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Get specific object details&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getObject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; objectGetter &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;No object getter configured&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; objects &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;objectGetter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; obj &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; objects&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; obj &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Object not found: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;object &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Run arbitrary Lua code with access to game objects&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;runLua&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; func&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; err &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadstring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; func &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Syntax error: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Set up environment with access to objects&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; env &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        objects &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; objectGetter &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;objectGetter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        love &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; love&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        print &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; print&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        pairs &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pairs&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        ipairs &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ipairs&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        type &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tostring &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tostring&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tonumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; tonumber&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        table &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        math &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; math&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        string &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;setfenv&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;func&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; env&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; success&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pcall&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;func&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;not&lt;/span&gt; success &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;error &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Runtime error: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Handle table results by encoding them&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Shutdown server&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;shutdown&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- Close all clients&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; client &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clients&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        client&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    clients &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Close server&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; server &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        server&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        server &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;MCP Bridge shut down&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- Simple JSON encoder/decoder&lt;/span&gt;
json &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; parts &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; isArray &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; arraySize &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;-- Check if it&apos;s an array&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;number&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                isArray &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            arraySize &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; arraySize &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; isArray &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; arraySize &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
                table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;]&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;string&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;encode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;{&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;}&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;string&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; obj&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;\\&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;\\\\&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;\\&quot;&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;\\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;number&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;boolean&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;nil&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;null&quot;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; json&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;decode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;str &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;
        pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- skip opening quote&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;str &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result
            &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\\&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;n&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;t&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\t&quot;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\r&quot;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\\&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\\&quot;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; escape &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; escape &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
                result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; char
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Unterminated string&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;{&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; obj &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;}&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; obj
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;:&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Expected :&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                obj&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                char &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;}&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                    pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; obj
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                    pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Expected , or }&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; arr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;]&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; arr
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
                table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;skip_whitespace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                char &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;]&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                    pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; arr
                &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; char &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                    pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Expected , or ]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;true&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;false&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;null&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; num_str &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;^%-?%d+%.?%d*[eE]?[%+%-]?%d*&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; num_str &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;num_str
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tonumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num_str&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Invalid JSON value at position &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;decode_value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; mcp_bridge
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;mainlua&quot;&gt;main.lua&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mainlua&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;并在main.lua中引入这个文件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; mcp_bridge &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;mcp_bridge&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; love&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;load&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- Initialize MCP bridge on port 12345&lt;/span&gt;
    mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;12345&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Provide access to your game objects&lt;/span&gt;
    mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setObjectGetter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; your_game_objects_table
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; love&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dt&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- Call this every frame to handle MCP commands&lt;/span&gt;
    mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- Your game logic here&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; love&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;quit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    mcp_bridge&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;shutdown&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;启动游戏&quot;&gt;启动游戏&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启动游戏&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;love game/   &lt;span class=&quot;token comment&quot;&gt;#在某目录启动游戏&lt;/span&gt;
或者
love &lt;span class=&quot;token builtin class-name&quot;&gt;.&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;#以当前目录启动游戏&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时就会弹出love2d的默认气球界面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260914145919690.webp&quot; alt=&quot;image-20260914145919690&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;游戏会在端口 12345 上启动一个 TCP 服务器&lt;/p&gt;
&lt;h2 id=&quot;连接mcp-inspector&quot;&gt;连接MCP Inspector&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#连接mcp-inspector&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个我不知道有什么用,不过影响不大&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npx @modelcontextprotocol/inspector node build/index&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260914145126548.webp&quot; alt=&quot;image-20260914145126548&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;就是我们在启动后会进入到浏览器的一个面板,可以自行研究&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260914145213823.webp&quot; alt=&quot;image-20260914145213823&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;添加skill&quot;&gt;添加skill&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加skill&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们使用这个认可度比较高的这个skill&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://lobehub.com/fr/skills/chongdashu-love2d-pocket-bomber-game-love2d-gamedev&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往网站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913232143473.webp&quot; alt=&quot;image-20260913232143473&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;直接复制给ai让它帮你装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Read https://lobehub.com/skills/chongdashu-love2d-pocket-bomber-game-love2d-gamedev/skill.md to understand how to install and use this skill. Install it as documented, then open the installed SKILL.md and follow its instructions. Ask for confirmation before any credential use, external service setup, or irreversible action.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后就会在项目的根目录生成&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260914144318248.webp&quot; alt=&quot;image-20260914144318248&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们启动一个love2d项目,它自己就可以按照你的提示词调用工具打开love2d&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E7%9A%84skill%E5%92%8Cmcp%E6%8E%A8%E8%8D%90/image-20260913231850658.webp&quot; alt=&quot;image-20260913231850658&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过光靠ai的效果是一言难尽的,还需要我们大量的纠正和调试&lt;/p&gt;
&lt;h2 id=&quot;bug&quot;&gt;bug&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#bug&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;不过这个还是存在一些bug的,例如ai会反复尝试获取报错日志,但是因为未知原因有的时候始终获取不到,&lt;/p&gt;
&lt;p&gt;只能靠我们去love2d的窗口来ctrl +C 复制下来错误给它&lt;/p&gt;
&lt;p&gt;这个问题还是等这个mcp的作者更新吧&lt;/p&gt;</content:encoded><category>Love2d</category><category>Love2d</category><category>Lua</category></item><item><title>看门狗2打不开解决方案</title><link>https://huyangpahuo.vercel.app/posts/kan-men-gou-2-da-bu-kai-jie-jue-fang-an/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/kan-men-gou-2-da-bu-kai-jie-jue-fang-an/</guid><description>本篇使用一个脚本解决看门狗打不开的问题</description><pubDate>Mon, 07 Sep 2026 19:14:36 GMT</pubDate><content:encoded>&lt;h1 id=&quot;转载自b站某大佬的方法&quot;&gt;转载自B站某大佬的方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#转载自b站某大佬的方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;本脚本用于解决启动游戏后，出现了个看门狗2的小弹窗，但又没进入游戏加载的情况&lt;/p&gt;
&lt;h2 id=&quot;安装方法&quot;&gt;安装方法：&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;1.用记事本或者其它文本编辑器打开&lt;code&gt;WD2_fix.bat&lt;/code&gt;&lt;br&gt;
2.找到&lt;code&gt;“set LAUNCHER_PATH”&lt;/code&gt;开头的那一行&lt;br&gt;
3.把UbisoftConnect.exe的路径，复制到双引号中，示例：&lt;br&gt;
&lt;code&gt;set LAUNCHER_PATH=&quot;C:\Program Files (x86)\Ubisoft\Ubisoft Game Launcher\UbisoftConnect.exe&quot;&lt;/code&gt;&lt;br&gt;
或&lt;code&gt;set LAUNCHER_PATH=&quot;D:\Ubisoft\Ubisoft Game Launcher\UbisoftConnect.exe&quot;&lt;/code&gt;&lt;br&gt;
如果安装育碧启动器时使用了默认的路径则不用改（C盘x86.....），如果是自定义安装路径则要自己重新填写。&lt;/p&gt;
&lt;p&gt;使用方法：&lt;br&gt;
1.选中WD2_fix脚本右键，&lt;code&gt;“以管理员身份运行”&lt;/code&gt;&lt;br&gt;
2.脚本挂着别动，打开uplay，在游戏库中找到看门狗2然后运行（注意不要以其它方式比如exe直接启动，且确保启动没有带参数比如-eac_launcher）&lt;br&gt;
3.如果没问题的话，过一会应该就能进游戏了。每次进游戏要先运行脚本，只要脚本没关闭，再次从uplay中打开游戏也不需要重新打开脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;@echo off
chcp &lt;span class=&quot;token number&quot;&gt;65001&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
setlocal enabledelayedexpansion


REM &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 用户配置区域 &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
REM 在下方LAUNCHER_PATH中设置Uplay启动器完整路径&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;LAUNCHER_PATH&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;D:\Uplay\Ubisoft Game Launcher\UbisoftConnect.exe&quot;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;GAME_EXE&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;SplashScreen.exe
&lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;CHECK_INTERVAL&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;set&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;LAUNCHER_DELAY&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
REM &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;


&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 请在Uplay中启动游戏
echo.

:MAIN_LOOP
tasklist /FI &lt;span class=&quot;token string&quot;&gt;&quot;IMAGENAME eq %GAME_EXE%&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt; /I &lt;span class=&quot;token string&quot;&gt;&quot;%GAME_EXE%&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;errorlevel&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; equ &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&lt;span class=&quot;token file-descriptor important&quot;&gt;2&lt;/span&gt;&gt;&lt;/span&gt;nul &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;timeout&lt;/span&gt; /t %LAUNCHER_DELAY% /nobreak &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
    start &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; %LAUNCHER_PATH% 
    :WAIT_FOR_GAME_EXIT
    tasklist /FI &lt;span class=&quot;token string&quot;&gt;&quot;IMAGENAME eq %GAME_EXE%&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt; /I &lt;span class=&quot;token string&quot;&gt;&quot;%GAME_EXE%&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;errorlevel&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; equ &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&lt;span class=&quot;token file-descriptor important&quot;&gt;2&lt;/span&gt;&gt;&lt;/span&gt;nul &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;timeout&lt;/span&gt; /t %CHECK_INTERVAL% /nobreak &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
        goto WAIT_FOR_GAME_EXIT
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;timeout&lt;/span&gt; /t %CHECK_INTERVAL% /nobreak &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
goto MAIN_LOOP
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>生活日常</category><category>Game</category></item><item><title>flutter---CORS问题</title><link>https://huyangpahuo.vercel.app/posts/flutter-cors-wen-ti/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-cors-wen-ti/</guid><description>本篇了解CORS即web跨域问题</description><pubDate>Thu, 03 Sep 2026 22:29:37 GMT</pubDate><content:encoded>&lt;h1 id=&quot;flutter-web-跨域cors问题&quot;&gt;Flutter Web 跨域（CORS）问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#flutter-web-跨域cors问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;本篇为chatgpt总结&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;1-什么是-web-跨域&quot;&gt;1. 什么是 Web 跨域？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-什么是-web-跨域&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在 Web 中，浏览器存在一套安全机制：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;同源策略（Same-Origin Policy）&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它规定：一个网页默认不能随意读取另一个不同 Origin 的资源。&lt;/p&gt;
&lt;p&gt;一个 Origin 由三个部分组成：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;协议 + 域名 + 端口
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://localhost:8080
│      │          │
协议   域名       端口
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;以下情况都属于不同 Origin：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://example.com
https://example.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;协议不同。&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://example.com
https://api.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;域名不同。&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://example.com:8080
https://example.com:9000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;端口不同。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-为什么浏览器要限制跨域&quot;&gt;2. 为什么浏览器要限制跨域？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-为什么浏览器要限制跨域&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;主要是为了安全。&lt;/p&gt;
&lt;p&gt;例如用户已经登录了：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://bank.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;浏览器中可能保存着银行网站的 Cookie。&lt;/p&gt;
&lt;p&gt;如果任何网站都可以随便读取银行的数据，那么恶意网站：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://evil.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;就可能尝试读取：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://bank.com/account
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;所以浏览器默认限制：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;evil.com
   │
   └──────→ bank.com
              ❌
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这就是同源策略。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-什么是-cors&quot;&gt;3. 什么是 CORS？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-什么是-cors&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;CORS：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cross-Origin Resource Sharing&lt;br&gt;
跨源资源共享&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它是浏览器提供的一种机制，让服务器可以明确告诉浏览器：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“我允许某个 Origin 的网页访问我的资源。”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;例如 Flutter Web：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;请求：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://api.example.com/user
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;服务器可以返回：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;http&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token header&quot;&gt;&lt;span class=&quot;token header-name keyword&quot;&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token header-value&quot;&gt;http://localhost:8080&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;浏览器看到以后，就允许网页读取响应。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-flutter-web-为什么会遇到-cors&quot;&gt;4. Flutter Web 为什么会遇到 CORS？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-flutter-web-为什么会遇到-cors&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Flutter 本身不是 CORS 的核心问题。&lt;/p&gt;
&lt;p&gt;关键在于：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Flutter Web 最终运行在浏览器中。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;例如使用 Dio：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://api.example.com/user&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在 Android 中：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter
   ↓
Dio
   ↓
网络
   ↓
API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;一般不会受到浏览器 CORS 的限制。&lt;/p&gt;
&lt;p&gt;但是 Flutter Web：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter
   ↓
Dio
   ↓
浏览器 Chrome
   ↓
API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Chrome 会执行浏览器的同源策略和 CORS 检查。&lt;/p&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web + Dio
        ↓
      Chrome
        ↓
      CORS检查
        ↓
   ┌────┴────┐
   ↓         ↓
允许        不允许
   ↓         ↓
  ✅        ❌
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-dio-会不会出现跨域问题&quot;&gt;5. Dio 会不会出现跨域问题？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5-dio-会不会出现跨域问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;会。&lt;/p&gt;
&lt;p&gt;Dio 本身不能绕过浏览器 CORS。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://api.example.com/test&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果 API 没有正确配置 CORS：&lt;/p&gt;
&lt;p&gt;Chrome Console 可能出现：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Access to XMLHttpRequest at
&apos;https://api.example.com/test&apos;
from origin
&apos;http://localhost:xxxxx&apos;
has been blocked by CORS policy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Dio 可能表现为：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DioExceptionType.connectionError
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;XMLHttpRequest error.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dio 能发请求 ≠ 浏览器一定允许读取这个请求的结果。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-如何判断是不是-cors&quot;&gt;6. 如何判断是不是 CORS？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6-如何判断是不是-cors&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先打开：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;F12
→ Console
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果看到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;blocked by CORS policy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;基本就可以确定是 CORS 问题。&lt;/p&gt;
&lt;p&gt;典型错误：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Access to XMLHttpRequest at &apos;https://xxx.com/api&apos;
from origin &apos;http://localhost:xxxxx&apos;
has been blocked by CORS policy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而 Dio 代码中可能只看到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;DioException [connection error]
XMLHttpRequest error
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;因此：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;判断 Flutter Web CORS 问题时，Chrome Console 比 Dio 的异常信息更重要。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;7-为什么有些-api-可以正常访问&quot;&gt;7. 为什么有些 API 可以正常访问？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#7-为什么有些-api-可以正常访问&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为服务器已经配置了 CORS。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;http&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token header&quot;&gt;&lt;span class=&quot;token header-name keyword&quot;&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token header-value&quot;&gt;*&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;表示允许跨 Origin 访问。&lt;/p&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web
    ↓
Dio
    ↓
API
    ↓
Access-Control-Allow-Origin: *
    ↓
Chrome
    ↓
✅ 200
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如测试：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://jsonplaceholder.typicode.com/posts/1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果得到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;200
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;并不代表 Flutter Web 没有 CORS。&lt;/p&gt;
&lt;p&gt;只是说明：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;这个 API 允许当前请求跨域访问。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;8-postman-为什么可以请求而浏览器不行&quot;&gt;8. Postman 为什么可以请求，而浏览器不行？&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#8-postman-为什么可以请求而浏览器不行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是一个很常见的误区。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web → API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;出现：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;❌ CORS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Postman → API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;✅ 200
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这并不矛盾。&lt;/p&gt;
&lt;p&gt;因为：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Postman
   ↓
API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不是网页浏览器环境。&lt;/p&gt;
&lt;p&gt;而：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web
   ↓
Chrome
   ↓
API
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;需要遵守浏览器的同源策略。&lt;/p&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Postman 能请求 ≠ 浏览器能请求。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;9-临时解决方法关闭-chrome-web-security&quot;&gt;9. 临时解决方法：关闭 Chrome Web Security&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#9-临时解决方法关闭-chrome-web-security&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;开发 Flutter Web 时，可以使用：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;--disable-web-security
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;让 Chrome 关闭 Web Security，从而绕过浏览器的 CORS 检查。&lt;/p&gt;
&lt;p&gt;一种修改 Flutter SDK 的方法：&lt;/p&gt;
&lt;h3 id=&quot;-修改-chromedart&quot;&gt;① 修改 chrome.dart&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-修改-chromedart&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;找到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter/packages/flutter_tools/lib/src/web/chrome.dart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在 Chrome 启动参数的位置添加：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;--disable-web-security&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-删除-flutter-缓存&quot;&gt;② 删除 Flutter 缓存&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-删除-flutter-缓存&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;删除：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter/bin/cache/flutter_tools.snapshot
flutter/bin/cache/flutter_tools.stamp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-重新生成-flutter-tools&quot;&gt;③ 重新生成 Flutter Tools&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-重新生成-flutter-tools&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;flutter doctor &lt;span class=&quot;token parameter variable&quot;&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后重新运行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;flutter run &lt;span class=&quot;token parameter variable&quot;&gt;-d&lt;/span&gt; chrome
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这样 Flutter 启动 Chrome 时，就会带上：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;--disable-web-security
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;从而可以用于测试一些没有正确配置 CORS 的 API。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;10-️---disable-web-security-的注意事项&quot;&gt;10. ⚠️ --disable-web-security 的注意事项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#10-️---disable-web-security-的注意事项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个方法本质上是在告诉 Chrome：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;关闭浏览器的 Web 安全限制。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;因此它适合：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;开发环境
测试
临时调试 CORS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不适合：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;生产环境
正式部署的网站
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;因为这不是在真正解决 CORS。&lt;/p&gt;
&lt;p&gt;正确的生产环境解决方案应该是：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web
     ↓
     API
     ↓
服务器配置 CORS
     ↓
Access-Control-Allow-Origin
     ↓
Chrome
     ↓
✅
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而不是：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Flutter Web
     ↓
关闭 Chrome 安全策略
     ↓
API
     ↓
✅
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;11-正规解决方案&quot;&gt;11. 正规解决方案&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#11-正规解决方案&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果 Flutter Web：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;访问：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://api.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;那么后端应该允许：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;http&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token header&quot;&gt;&lt;span class=&quot;token header-name keyword&quot;&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token header-value&quot;&gt;http://localhost:8080&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;生产环境则应该根据实际域名配置，例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;http&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;&lt;span class=&quot;token header&quot;&gt;&lt;span class=&quot;token header-name keyword&quot;&gt;Access-Control-Allow-Origin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token header-value&quot;&gt;https://example.com&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;也可以根据后端框架配置 CORS。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;12-vpn-和-cors-没有直接关系&quot;&gt;12. VPN 和 CORS 没有直接关系&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#12-vpn-和-cors-没有直接关系&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;VPN：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;改变网络连接方式、路由、出口 IP 等。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;CORS：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;浏览器控制网页是否可以读取其他 Origin 的资源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;所以：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;VPN 开启
+
API 没有 CORS
=
❌ 仍然可能 CORS
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;VPN 关闭
+
API 正确配置 CORS
=
✅ 正常访问
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;因此：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;VPN 不会自动解决 CORS。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;13-flutter-web--dio-的完整关系&quot;&gt;13. Flutter Web + Dio 的完整关系&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#13-flutter-web--dio-的完整关系&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;可以记住这个流程：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;                 Flutter Web
                     │
                     ▼
                    Dio
                     │
                     ▼
                  Chrome
                     │
              同源策略 / CORS
                     │
             ┌───────┴───────┐
             │               │
          服务器允许       服务器不允许
             │               │
             ▼               ▼
            ✅              ❌
           200          CORS Error
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;14-最重要的几个结论&quot;&gt;14. 最重要的几个结论&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#14-最重要的几个结论&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;-cors-主要是浏览器的问题&quot;&gt;① CORS 主要是浏览器的问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-cors-主要是浏览器的问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不是 Dio 独有的问题，也不是 Flutter 独有的问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-flutter-web-才特别容易遇到&quot;&gt;② Flutter Web 才特别容易遇到&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-flutter-web-才特别容易遇到&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;因为 Flutter Web 运行在浏览器中。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-dio-不能绕过-cors&quot;&gt;③ Dio 不能绕过 CORS&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-dio-不能绕过-cors&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Dio 只是 HTTP 客户端。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-api-是否允许跨域由服务器配置&quot;&gt;④ API 是否允许跨域由服务器配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-api-是否允许跨域由服务器配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;常见响应头：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;http&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-http&quot;&gt;Access-Control-Allow-Origin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-postman-能请求不代表浏览器能请求&quot;&gt;⑤ Postman 能请求不代表浏览器能请求&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-postman-能请求不代表浏览器能请求&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;因为 Postman 不受浏览器同源策略限制。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;-vpn-和-cors-没有直接关系&quot;&gt;⑥ VPN 和 CORS 没有直接关系&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-vpn-和-cors-没有直接关系&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;VPN 不会自动解决跨域。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;---disable-web-security-可以临时测试&quot;&gt;⑦ &lt;code&gt;--disable-web-security&lt;/code&gt; 可以临时测试&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#---disable-web-security-可以临时测试&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Flutter 可以修改：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter/packages/flutter_tools/lib/src/web/chrome.dart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;添加：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;--disable-web-security&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后删除：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter/bin/cache/flutter_tools.snapshot
flutter/bin/cache/flutter_tools.stamp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;flutter doctor &lt;span class=&quot;token parameter variable&quot;&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;再：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;flutter run &lt;span class=&quot;token parameter variable&quot;&gt;-d&lt;/span&gt; chrome
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但这只是&lt;strong&gt;开发调试方案&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;一句话记忆&quot;&gt;一句话记忆&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一句话记忆&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Flutter Web 使用 Dio 请求 API 时，Dio 负责发请求，Chrome 负责执行浏览器安全策略，服务器通过 CORS Header 告诉 Chrome“哪些网页可以读取我的响应”。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;所以遇到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;blocked by CORS policy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第一反应应该是：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;F12 → Console
        ↓
确认 CORS
        ↓
检查服务器 CORS 配置
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而不是首先修改 Flutter。&lt;/p&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>安卓termux运行claudecode和codex</title><link>https://huyangpahuo.vercel.app/posts/an-zhuo-termux-yun-xing-claudecode-he-codex/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/an-zhuo-termux-yun-xing-claudecode-he-codex/</guid><description>使用termux下载Ubuntu环境下载claudecode等应用</description><pubDate>Thu, 03 Sep 2026 01:11:53 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇介绍在termux里claudecode等cli的安装&quot;&gt;本篇介绍在Termux里claudecode等cli的安装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇介绍在termux里claudecode等cli的安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;代理工具开启&quot;&gt;代理工具开启&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#代理工具开启&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先确保VPN代理工具开启，网络流畅&lt;/p&gt;
&lt;h2 id=&quot;下载termux&quot;&gt;下载Termux&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载termux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;下载&lt;a href=&quot;https://github.com/termux/termux-app&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;termux软件&lt;/a&gt;并更新配置&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pkg update &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; pkg upgrade &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;由于在安卓没有办法在Termux直接用npm安装Claudecode，所以我们需要安装其支持的系统如Ubuntu&lt;/p&gt;
&lt;h3 id=&quot;首先安装proot-distro&quot;&gt;首先安装proot-distro&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先安装proot-distro&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;核心作用是&lt;strong&gt;无需 Root 权限就能在 Android 手机上安装并运行一个完整的 Linux 发行版&lt;/strong&gt;，比如 Ubuntu,Debian 或 Arch Linux&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;pkg &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; proot-distro &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;然后验证版本&quot;&gt;然后验证版本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后验证版本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;proot-distro &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;安装ubuntu&quot;&gt;安装Ubuntu&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装ubuntu&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后安装Ubuntu 24.04LTS&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;proot-distro &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; ubuntu:24.04
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后检查已安装的系统可以看到Ubuntu已安装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;proot-distro list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后进入Ubuntu&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;proot-distro login ubuntu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;成功的话可以看到root@localhost:~#&lt;/p&gt;
&lt;p&gt;也就是已经是root模式，不需要在前面添加sudo命令了&lt;/p&gt;
&lt;p&gt;然后我们输入以下命令检查环境&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; /etc/os-release

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token environment constant&quot;&gt;$HOME&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;只要是显示为Linux和root即可&lt;/p&gt;
&lt;h2 id=&quot;安装工具链&quot;&gt;安装工具链&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装工具链&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;更新一下ubuntu-配置&quot;&gt;更新一下Ubuntu 配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#更新一下ubuntu-配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; update &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; upgrade &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装-gitcurljq&quot;&gt;安装 Git、curl、jq&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装-gitcurljq&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; jq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;配置git信息&quot;&gt;配置git信息&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置git信息&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; user.name &lt;span class=&quot;token string&quot;&gt;&quot;huyangpahuo&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; user.email &lt;span class=&quot;token string&quot;&gt;&quot;3930088367@qq.com&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检查&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#查看用户名：&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config user.name

&lt;span class=&quot;token comment&quot;&gt;#查看邮箱：&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config user.email
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装-nodejs推荐方式&quot;&gt;安装 Node.js（推荐方式）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装-nodejs推荐方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ubuntu 官方源里的 Node.js 版本通常较旧，Claude Code 需要较新版本。建议用 NodeSource 安装 LTS 版&lt;/p&gt;
&lt;p&gt;下载并执行 NodeSource 安装脚本（以 Node 24 LTS 为例）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-fsSL&lt;/span&gt; https://deb.nodesource.com/setup_24.x &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bash&lt;/span&gt; -
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;安装 Node.js（会自动包含 npm）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;apt&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-y&lt;/span&gt; nodejs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在此期间会让你选择时区&lt;/p&gt;
&lt;p&gt;我们选亚洲Asia 5 地区 上海 Shanghai 69&lt;/p&gt;
&lt;p&gt;如果列表没有可以输入More查看更多地区&lt;/p&gt;
&lt;p&gt;验证版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;更新-npm-到最新版&quot;&gt;更新 npm 到最新版&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#更新-npm-到最新版&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; npm@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检查版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;安装-claude-code&quot;&gt;安装 Claude Code&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装-claude-code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;直接安装可能报错,这里用&lt;code&gt;--allow-scripts&lt;/code&gt;允许执行脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; @anthropic-ai/claude-code --allow-scripts&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;@anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果安装失败，先卸载再重装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#先卸载&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; uninstall &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; @anthropic-ai/claude-code

&lt;span class=&quot;token comment&quot;&gt;#再安装&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; @anthropic-ai/claude-code --allow-scripts&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;@anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检查Claude版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;claude &lt;span class=&quot;token parameter variable&quot;&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们先配置环境配置，这样Claude code 就不用登录了&lt;/p&gt;
&lt;p&gt;把下面命令里的 &lt;code&gt;sk-你的DeepSeek密钥&lt;/code&gt; 替换成你的真实 API Key：&lt;/p&gt;
&lt;p&gt;设置API地址&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;export ANTHROPIC_BASE_URL=&quot;https://api.deepseek.com/anthropic&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&gt;&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;配置deepseekAPI密钥&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;export ANTHROPIC_AUTH_TOKEN=&quot;sk-你的DeepSeek密钥&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&gt;&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;配置模型声明1M百万上下文支持&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;export ANTHROPIC_MODEL=&quot;deepseek-v4-pro[1m]&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&gt;&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装-cc-switch-skill可选针对claudecode&quot;&gt;安装 cc-switch-skill(可选,针对claudecode)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装-cc-switch-skill可选针对claudecode&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-sSL&lt;/span&gt; https://raw.githubusercontent.com/stcatz/cc-switch-skill/main/install.sh &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bash&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;安装脚本会自动把 Skill 安装到：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;安装完成后会提示重启 Claude Code 才能使用。先不重启，继续初始化：&lt;/p&gt;
&lt;p&gt;第一次运行会自动创建配置目录&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch/scripts/list_providers.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;查看预设提供商&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;jq &lt;span class=&quot;token string&quot;&gt;&apos;.presets[] | {name,id}&apos;&lt;/span&gt; ~/.claude/skills/cc-switch/presets.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以在列表看到DeepSeek Official等等预设&lt;/p&gt;
&lt;p&gt;不过预设不等于已添加的provider&lt;/p&gt;
&lt;p&gt;所以我们需要自己配置&lt;/p&gt;
&lt;p&gt;自定义API和提供商的方法（以deepseek为例，虽然我们已经配置环境变量为deepseek的了）&lt;/p&gt;
&lt;p&gt;添加 DeepSeek 到 cc-switch&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch/scripts/add_provider.sh &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;

  &lt;span class=&quot;token parameter variable&quot;&gt;--name&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;DeepSeek&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;

  &lt;span class=&quot;token parameter variable&quot;&gt;--app&lt;/span&gt; claude &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;

  &lt;span class=&quot;token parameter variable&quot;&gt;--key&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;你的API Key&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;

  &lt;span class=&quot;token parameter variable&quot;&gt;--url&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://api.deepseek.com/anthropic&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;查看已添加的提供商&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch/scripts/list_providers.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果装错API了需要清空&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch/scripts/delete_provider.sh &lt;span class=&quot;token punctuation&quot;&gt;\&lt;/span&gt;

  &lt;span class=&quot;token parameter variable&quot;&gt;--id&lt;/span&gt; 粘贴你实际的ID
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后检查一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;~/.claude/skills/cc-switch/scripts/list_providers.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果觉得界面上信息太多了&lt;/p&gt;
&lt;p&gt;可以输入&lt;code&gt;clear&lt;/code&gt;清除&lt;/p&gt;
&lt;p&gt;输入&lt;code&gt;exit&lt;/code&gt;退出&lt;/p&gt;
&lt;p&gt;然后下一次进入进入Ubuntu&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;proot-distro login ubuntu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;输入claude启动，不过是以root为工作目录的&lt;/p&gt;
&lt;p&gt;当然也可以在 Claude Code /cc-switch skill里选择Switch to DeepSeek  快速切换模型或者  List all providers  列出所有提供商（不过这个是让claude帮忙完成，会消耗token）&lt;/p&gt;
&lt;p&gt;不过恢复的话也很简单，Ubuntu执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; ~/.claude/settings.json先查看当前配置

&lt;span class=&quot;token function&quot;&gt;nano&lt;/span&gt; ~/.claude/settings.json进行编辑

 Ctrl + O  →  Enter  保存

 Ctrl + X  退出

&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; ~/.claude/settings.json再次检查
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者直接删除&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;rm&lt;/span&gt; ~/.claude/settings.json
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;安装codex&quot;&gt;安装Codex&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装codex&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;codex则不需要标记--allow-scripts，由于每个月有免费额度,所以这里不再推荐接其他模型的api&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;npm&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-g&lt;/span&gt; @openai/codex
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;授权termux手机存储的访问&quot;&gt;授权termux手机存储的访问&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#授权termux手机存储的访问&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于termux默认无法对安卓文件系统操作,所以需要授权,这样ai才能在我们文件夹创建的目录工作&lt;/p&gt;
&lt;p&gt;termux终端输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;termux-setup-storage
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后进入指定目录例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/storage/emulated/0/MyProject
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;看看是否可以访问&lt;/p&gt;
&lt;p&gt;注意路径不要有中文&lt;/p&gt;
&lt;h2 id=&quot;检查是否能用&quot;&gt;检查是否能用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检查是否能用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于Android和Ubuntu的文件系统表示方式不太一样，所以还需要操作&lt;/p&gt;
&lt;p&gt;我们进入Ubuntu&lt;/p&gt;
&lt;p&gt;输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ls&lt;/span&gt; /storage/emulated/0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;看看Ubuntu是否能访问Android文件&lt;/p&gt;
&lt;p&gt;可以访问就执行进入文件路径&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; /storage/emulated/0/MyProject
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时在Ubuntu里显示的是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;/mnt/sdcard/MyProject
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;实际上是同一个路径，只是表达方式不同&lt;/p&gt;
&lt;p&gt;然后启动打开codex或者claude 输入提示词,例如“我需要你帮我生成一个简单的个人blog放在当前工作区....”&lt;/p&gt;
&lt;p&gt;然后就可以看到这个文件夹里有生成的脚本,就大功告成啦&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;说实话,真的不如手机上远程连接电脑&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Termux</category><category>Termux</category></item><item><title>试试新出的DeepseekHarness和Pi</title><link>https://huyangpahuo.vercel.app/posts/shi-shi-xin-chu-de-deepseekharness-he-pi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shi-shi-xin-chu-de-deepseekharness-he-pi/</guid><description>试用dsh和pi</description><pubDate>Thu, 03 Sep 2026 01:11:53 GMT</pubDate><content:encoded>&lt;h1 id=&quot;deepseek-harness和pi最近很火爆也算是ai圈朝秦暮楚的常态了&quot;&gt;Deepseek harness和pi最近很火爆,也算是AI圈朝秦暮楚的常态了&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#deepseek-harness和pi最近很火爆也算是ai圈朝秦暮楚的常态了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;事不宜迟,旅游回家后第一件事就是下载一个看看&lt;/p&gt;
&lt;h2 id=&quot;deepseekharness&quot;&gt;DeepseekHarness&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#deepseekharness&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/deepseek-ai/deepseek-harness&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;npx @deepseek-ai/dsh web
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个是终端输入dsh web启动作为后台,在网页运行的,功能采用插件式,和codex很像啊&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E8%AF%95%E8%AF%95%E6%96%B0%E5%87%BA%E7%9A%84DeepseekHarness%E5%92%8CPi/image-20260903032710841.webp&quot; alt=&quot;image-20260903032710841&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E8%AF%95%E8%AF%95%E6%96%B0%E5%87%BA%E7%9A%84DeepseekHarness%E5%92%8CPi/image-20260903030400255.webp&quot; alt=&quot;image-20260903030400255&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然这个东西也有网页套壳子的,就是这个,不过下载启动了这个就无法再使用dsh web命令了,这个软件会抢占并监听本地3080端口&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/dataelement/dsh-desktop&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E8%AF%95%E8%AF%95%E6%96%B0%E5%87%BA%E7%9A%84DeepseekHarness%E5%92%8CPi/image-20260903030435590.webp&quot; alt=&quot;image-20260903030435590&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;pi&quot;&gt;Pi&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个本质cli,在终端输入pi就可以启动了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;npm install -g --ignore-scripts @earendil-works/pi-coding-agent
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;还有带有web UI端的可以了解一下,直接输入pi-web就能获得UI界面,比CLI操作方便多了&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/agegr/pi-web&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;npm install -g @agegr/pi-web@latest
pi-web
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E8%AF%95%E8%AF%95%E6%96%B0%E5%87%BA%E7%9A%84DeepseekHarness%E5%92%8CPi/image-20260903030956091.webp&quot; alt=&quot;image-20260903030956091&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;貌似用处都不是很大&lt;/p&gt;</content:encoded><category>生活日常</category><category>Diary</category></item><item><title>JsonCrack---让json和yaml可视化</title><link>https://huyangpahuo.vercel.app/posts/jsoncrack-rang-json-he-yaml-ke-shi-hua/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/jsoncrack-rang-json-he-yaml-ke-shi-hua/</guid><description>本篇介绍一下jsoncrack软件</description><pubDate>Fri, 17 Jul 2026 17:20:09 GMT</pubDate><content:encoded>&lt;h1 id=&quot;这个感觉非常实用尤其是对于大型json和yaml的查看和修改&quot;&gt;这个感觉非常实用尤其是对于大型json和yaml的查看和修改&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这个感觉非常实用尤其是对于大型json和yaml的查看和修改&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AykutSarac/jsoncrack.com&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个在VScode里也有插件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717195842124.webp&quot; alt=&quot;image-20260717195842124&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;使用方法就是打开一个json文件并点击这里&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717195859548.webp&quot; alt=&quot;image-20260717195859548&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过&lt;a href=&quot;https://todiagram.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;付费版本&lt;/a&gt;的更好看,相比开源版还多支持了一个Mermaid图&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717202509828.webp&quot; alt=&quot;image-20260717202509828&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;付费版也有mcp和skill&quot;&gt;付费版也有mcp和skill&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#付费版也有mcp和skill&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm install &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g @todiagram/todiagram-mcp
npx skills add todiagram/skills &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;skill diagram
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后搭建&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;yaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;&quot;mcpServers&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;&quot;todiagram&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token key atrule&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;stdio&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token key atrule&quot;&gt;&quot;command&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;npx&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token key atrule&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-y&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;@todiagram/todiagram-mcp@latest&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token key atrule&quot;&gt;&quot;env&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;&quot;TODIAGRAM_API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;your-api-key-here&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;或者把项目克隆到本地后运行&quot;&gt;或者把项目克隆到本地后运行&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#或者把项目克隆到本地后运行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本地的缺点是太慢了,虽然可以部署到服务器的Docker,不过感觉浪费服务器空间,因为全部文件将近一个G&lt;/p&gt;
&lt;p&gt;其实用官方的那个网站就行了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717203102515.webp&quot; alt=&quot;image-20260717203102515&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后创建bat自启动脚本快速启动&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;@&lt;span class=&quot;token function&quot;&gt;echo&lt;/span&gt; off
cd &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;d &lt;span class=&quot;token string&quot;&gt;&quot;D:\jsoncrack.com\jsoncrack.com&quot;&lt;/span&gt;
cmd &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;k pnpm dev
&lt;span class=&quot;token function&quot;&gt;start&lt;/span&gt; http:&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;localhost:3000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在浏览器访问这个localhost本地服务器网址&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717203730271.webp&quot; alt=&quot;image-20260717203730271&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就可以用了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/JsonCrack---%E8%AE%A9json%E5%92%8Cyaml%E5%8F%AF%E8%A7%86%E5%8C%96/image-20260717203810060.webp&quot; alt=&quot;image-20260717203810060&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>软件推荐</category><category>JsonCrack</category></item><item><title>AutoHotkey---TyporaWriterKit工具制作</title><link>https://huyangpahuo.vercel.app/posts/autohotkey-typorawriterkit-gong-ju-zhi-zuo/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/autohotkey-typorawriterkit-gong-ju-zhi-zuo/</guid><description>生成hexo yaml front matter模版</description><pubDate>Thu, 16 Jul 2026 23:11:19 GMT</pubDate><content:encoded>&lt;h1 id=&quot;自定义生成hexo-的-yaml-front-matter&quot;&gt;自定义生成hexo 的 YAML front matter&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#自定义生成hexo-的-yaml-front-matter&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;思路不唯一,目前仅限我使用的hexo的主题,由于不同blog的yaml front matter可能天差地别&lt;/p&gt;
&lt;p&gt;所以后续会更改为自定义化属性和字段&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/huyangpahuo/TyporaWriterKit/releases/tag/V3&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;点击前往下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey---TyporaWriterKit%E5%B7%A5%E5%85%B7%E5%88%B6%E4%BD%9C/image-20261008095643399.webp&quot; alt=&quot;image-20261008095643399&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;凑合着用还行&lt;/p&gt;
&lt;p&gt;目前是和md字体颜色生成器融合&lt;/p&gt;</content:encoded><category>AutoHotkey</category><category>AutoHotkey</category></item><item><title> 浏览器插件推荐</title><link>https://huyangpahuo.vercel.app/posts/liu-lan-qi-cha-jian-tui-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/liu-lan-qi-cha-jian-tui-jian/</guid><description>记载一些常用的浏览器插件</description><pubDate>Thu, 16 Jul 2026 18:24:23 GMT</pubDate><content:encoded>&lt;h1 id=&quot;昨天chrome的谷歌账号掉了结果就是浏览器插件都消失了&quot;&gt;昨天chrome的谷歌账号掉了结果就是浏览器插件都消失了&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#昨天chrome的谷歌账号掉了结果就是浏览器插件都消失了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;幸好谷歌有云备份,但是只有一小部分恢复了,于是我还得一个一个的下回来&lt;/p&gt;
&lt;p&gt;以防万一我还是把我常用的插件在这里记录一下吧&lt;/p&gt;
&lt;p&gt;首先确保chrome浏览器打开了开发者模式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/image-20260716214833287.webp&quot; alt=&quot;image-20260716214833287&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;广告屏蔽类&quot;&gt;广告屏蔽类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#广告屏蔽类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACYAAAAmCAYAAACoPemuAAAKaklEQVR4nJxYfXBU1RW/5719Sfgmg8HSom2xfkBoUQOYD2k3WcoQwA4GNwEcqOhoO2P7V2t1atuJM53SjvpPp6VtxmGo6JBkKTCiRGjZrDLsboDgtCFS6hhAOy0hQb6JSfbd29+5777dlyUB7Z15u+/dj3N+5+Oec+4NiUBTQhDhTzU2WolEwgonEi73c997K8NTh4rsrysl8Vh3k1C3KyWmY80UyxLjMMsRQmKxlVFKXSNBFzHWB4KnieQJIqur4FO3675diQtKkxQiEQ7b4XBYUmOj9Hn7WMgH5ANojUbtaGmp4skH1j5Y7LgFK5UUdVi1AFNu9VaR+DwNQA0z6lVCHQLDHUXDcpcGCSXEurupPhZzgzgo+NEeDoeqE4lMek3kVuGqH6N7A55pASDMgbUoA2omj4KgwJzgPzcLj52do0dUP0BulsPOy1U79531eWfx+Cr0Bzqi1csV0Z/RO82QkAYMEw+JfG0EkHnTKa9vRMsYerahR9Bmv1K0rjK2/+0gOL2azceqTEcjj4BeTJGGnTHEbCMA22QYAyctpXpcsj4iUv+FlfpB5QrMPWgR8xGFZImJSqpbiGgGMH4FQO8A0C+DiuPZRiN3jSghrGIGdQ/E4jt9LMQ2Zn9KrgrfQ7Z1CMQmGanIk0i/x/G8Rq6VDE375NT8ps7hfGcdramcecWRushXM46qAb01FolqoxSlxYX2wOiicO0F5X/56weMKcSOp20aokZINcmo24ZQBEhtSljPVsb+1uUDYYmSq6dUdkhamhaqDP23o78Y/0XCm8NavYS1ZzosOi6lOGRJ613NUIiTGH8l1VBzP+hvBL8lJIx1iKaokNuIz0cZkwZ1uC4yC9K8j4mF2p8UgJFqrmiJr2FAnU+VhVhL6frqZaTol4B832fdmd6GVC5os3DbZKG9pWrrvrPcm2qIbAeVVcLzYRt+MCAzYnbVjvhpdkDhhkQlJhRqbXmgLtkU+gmPtdXWFmhQDTUbgfEtaRGDUkaz/g5VHgQNI7hhMsDvwj1sqOVeOMZv7MHM8Y76iKYth9WPOOYZP2Z642yHKoTZGaAkZwtvH7n8A62kFjbv+/hYNFqwrK1tEIR+Cvd8DoAy5DFkdYXMvwkhZB49rgJzbKM8STxOVCwBMF1f02kLydaJC28yC8Ax72tC+Nuf7Mme0N4MOFc/d8+NxYawU+eA0C/M9s/FIh3mIdjNLWo0mgUIT6AMfu6HXyex/LKnHE9JAOfkgAV9IsDZo6LWG9/LZOd7kyyM/RNvacj5EUn7CjRvQ+ipUM1t6L/bPBMpm2CyMSxE/E7WTB04vOYHXxoVmLge6SKzxMqBgsJJPF7RHN8SzBxmOPt98OEl08lxK/G6Hh0r4CKOBkealmVg5OtC3BRYMloxDiBm5HgZolK9UxFr33LkqTIndb5A00iaNSk8gxMKVfspkeFUg5j0BuLkrkNrqktdKV6E9mrZqQ24MR3hhsAuXJkqiycPZgJdejsiwpemV337zvlNOhi6orFRBYNtMPi2dXQ42ESqdFsM4UgsS6+OPI0Y9jvySP1/wHhHpuprPsDyO4XxD70NiUoQDJMYi6ePH+gXDTWUYkeSCK6CLqdJnUkq9S817LxXtbPtLAPtjkadY1g7tzn2e+zIcfDPF8nbxfbnBqZVRGI7YxR56QdEb8FPvf+VTWJaZeQFHydzNR2t2dsRohfKt8X+wUman/LW+EsAV4WZK7U4vv8GmiVu0Dj9DPTKrQguKcBiIYbFyLJGB1H90Ij3jGZINAF2r0MJdRRVy1quHCbdddnsPnoeBAbHwmA6ZVZwL2KS7p8DNTMx5JN1iGU9GHDMOj+Q+jR8R/brrlCAIWIWIZtYr6ajix/kLMKBuzy2Hz6ndgTo+RhUDphSl4wKTJATi9OPhmdygOWdV9US/9AeooWw0CY47kCAuR0AZumAqwIB2Gscs1ysxVz5K+7o6+uT3gRqVVmVGDNwaZWTij421S9/o/6mEjFs/YmdtuyLD7ks4cJ5i85XtOx/2pbyDmyo9RjbhLl7QegwwHZh/XH0nwCAU/geEiNNZHuGEIvS0eoytoIGZlkos9WVgIIY4hlhpGZHPaG8OOebhPPeso76mtaBU4l11bHEp0eKe5w9tbXOglhbLyZsVVyf+aT81thI3d3doYvOuRlWRv4RB5ClRnMWaYG5nLLuxXen1oI7PB4sC0TWJYgnnsgCG1JDxxzLOY/XYuHnNTgzRHyk8Ko1O1Vf/b35Te0HfRAAWJiaeMHagzjXedtZ2XN+lme27m4xq7hHVTV1noZmfgZhlyL3ZTVHXnSbIrJIbJTxgoHpdIf556TrdGtgvPO+GYv1paI1BzFzhdJVgFY9xyxJFpVCLQeS9ZE9HUJuGlDq3WWxtisjU1GnZwl8xqJRTyFklRtdZsOB8kLvOX5vfyxcpK6pDYE8yr59oKJ17yeMKVTS1+cxsOh1jK6gkdFY+xxLis7l2OLLi4h6U9HI0RQpLjNPJCX9G1JcRP3idgirYKY4V5JuiCyFkR8zTK2sn+mKTR3nj6Jr1jqwmmeA2/oYQPQ6jzGm7CmJzVM8afAoBucoHSKvSxd+HTYi7vDpg7JxxpyPcoc0Cqy1geBIZcv+BclozZfgS0cw8QsiVzF3OVMulvnnCc2EozGnH6D8tSkPpLi++aEhGFi5uOOErIwtFFE2xgXrNs+MQrxg+jYbUJoPn25BYCODYixZNfNVAJ9MymNx3m1vGxCuGL35yccOgPVPABToywIEYxu8n4G23kQqaoLbLBG5SheFrHizsjW+jTH41xJW/hEsFBKc/bmCtdWNNKcCQdEcw0SuI5AFUEQqtZzzY6p+8R+A80ko2L8O4ANILwrsHwQZkOdKuTLFPwnjeFWL7j0s6ojjv1I43dB2RfIujr3omcx1uckiPjIOrv/hw5WStGOyKOYiQFy2zm0DkTpzLrCMedn0teUt8X15p3AVlHoEOJyKNqBvM8BJRTlTwWEOWBn7CT4nHl4bmeW67nRLeUFSKnXVdah/qED2hrckBpleR0P1PDhhM0jc45tWgyJlAdh3K1vaX80HldNEHjjOj+yIydWRJ3Ad8IrwNKeEn0uVGoSwP19Y+q2X86+QsgIiTiEkPIv354V3wPA3BG8VwBIbuDT3eeWf7EcFFjzkJlfXPAxYr0Fz401p45sf5kBMUuq58lj77iAdaOk74L0R1GYHdrh2dGjpKiRbW9Hc/gaDKmvqzPg8xwQ2FjhcS30DlyQtAXP4zTbJPw1V7pZKu8ZDCEIPGNJ5c9X7kmRDVUvi2I1AjQrMB2cGsz7393VLJlwbzryEwe9Tjqlv3vxiT4pAWFGeU21yBsY/M3/37mvX3YXlgRoTWD44zl38rq+q6iPV8JDfon9uwPd8kD5N/+qKl3dB2z+sjLW/E6QzmpaCbczS2mxZrWYmxNefXr2+vx2pA7c14klUtSehDabBzl1gHof9D/09wPw4pxkGxWuZxmcBZfjfvAUJMYO+khLNoD0anjiO7JVQHBK8mGUIfojg9Nb4AnvXvK37rrKWOCnfzHT57X8AAAD//3RD2XIAAAAGSURBVAMAfMladB7J2X4AAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Ad Blocker: Stands AdBlocker&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFFklEQVR4nMyaW2gUVxjH/3NmL+5md8YkZnPRKlKUpkhbE9DHNtWKkhcVfPJFyEtLpLalrVSqJa2VXiBQqQUffPSCCoK0KKRUxFcbmxBiNbZYkqzZzXU3NrvJXsbvGyXsJptkzuxk4w/Czpzb9//mnO+bMzNxwQZPNK05A3wFw3iTTj0ojhkoSpcKtNXG479BEgWSDOr650Y2+z2WAUWIo2tjsR9k+giZxmFd/2K5xDM8NtuQ6WN5BgY07UtaMt+gFCjK8XXx+EkrTS3NwKCmnSiZeIZsmTYtsKQDYU372jCMNthFVWEHtsm2l2q3qAMDweC3WcM4Dhsouo41HR2oi0ZRfu4cLwvIwrZZw2JtFnRgMBj8jn6OwSb+gwfh3b4ditsN/4ED8NCxTY690FKQgg5QqvzRAI5CAt++faju6kLV7dtwbdkCtbo631BVFURNDQJHjqCspQWK3295bNbCmgrVueYWULZpp3T2MSTR29uhVlY+P25rQ6qnZ16bykuX4GloMI/dW7di4vBhWIU0fUraVMpOn+SW580ARf5PFD3S4hVNmxXPqOvXz1/zQsyKZ2wtKdJmaswd9nm5oVDFz/T7IZygQMAqc8tsBDXDGl9oNQcwl9ATXf+FCt6HXWyKsQtpbSXNnJ8/EBQcLVkb4vVTp1Db32+mSMVmri8G1szaBQXHR5CE13iAAlBQrucU6W5sxErA2gVNfj0kEeXl+ecVFVgJWLuLcmzx828hBmjdwmlYuwtOUMiBEgW2Iw4oJc5CudhzwKGcniekvh5lhw7BtWkTjGQS462tMMbHl+4HJyhyCXl37ULlxYvmxo/JhMOWxDPL4oBYvRruzZvzDW3YULiv14vys2dnxTOJa9dgFUcc4B1mLmooBHX37rwy/WThJ0Tf/v15+yhm6soVWMURB+ZebRkCtLXOJf3oEVKdnbCKPQccyul8B/ds25ZXJnP1GWeykA04TrQT85/bEyVxwIEZMOOE/nKZuXfPXEIyOJOFHEL26jMvjQO0s8TU1auQ5aVxYObOHWSHhiDLimahXKYuX4YdbDmQjcfhJMb0NBLXr8MO/EATgSSZgQEYqRScIklv8IxYDLKwdkE5/QZkSaeRun8fTpGwuXxYu1ACgc9oP/8fJEnekPe7EFnadSZu3oQsrJm1i7pweEQI8Q4VPJYZgHO2E4+JT8+coauRlOrDWlmzqZ0LaicmHtOrkbep5l+rg6QfPsTU+fMohhSNMXn6tFQf1shaWbN5mls3WFHxipFO36JL+6qVsQS9wA1R/lbppa0svHSG9+xBurfXeidF+UdxuZrWjo31z2rIreeKVW43z0SflfGykQhGmpuRkbwBcfuRvXtlxfextlzxzLzX62tGRwe9Hg/HxANYIN3Xh+EdOzB14QKMTGbRtjS7+J+WXYS20CnauFnXrjxgTaxtXt1CnaJVVTWpZPIWhelrsIi6caP5YcND+3y1thaKz4cMzRLfN2bu3jXTZXZkBDKQwL/dq1Y1hYaHhxaoX5hIKFSdTiT+ICdexwpA4npdPt+71dHogjfbRb+RcUfV72+iwx6Unh62vZh4ZsmvlDWRSFQEg+xEN0pHN9tk20s1tP6hOxispGD6nW5eb2EZIRt/kY2d6yYnRy21hwQxTat4CnSQgQYsAyS+MwC8p8fjY1b7SP2vBA9cpig7ydCvcBgek8eWEW/2g03Cut5Ij4FvGEJ4UQRKNjutCNFdF4v9CRs8AwAA//8T6iJYAAAABklEQVQDABDg2+3z7m5AAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;AdBlock - 拦截整个网络的广告&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAIx0lEQVR4nMxaCWwc5RV+c+yuj904d+x4reDYiZ2D0pBCi6BIFbSQlNJDIkEqBKQWBfWSSimQlFbYmzQ0lDYRCIRATggIbO5AQg5uBQUIKAKiOPERIMRHHBLAeHftnZ2Zn/f+OXZ2Z/YKm+OTNpmdnffPe+//3vvf/37LcBLoPHRolqSq6xhjFVAaMFEU7509e/ZWKBICFIn9+/c3yj7fzupp0+oDgQCUApqmwdGhoXhCVZfMLdKIogzo6elpQK/vqK6paQgFg1BKKIoCR/r6opqqLm1qanq5ULmCDejs7JyFnt9eXV09k5RnCQVG17aBfngQvhMqyqBi5U0gVk/mRvT398dUVb0W6bSlEPGCDOjt7W3UdH1nTU1NPVd+TIHY3/8LyotvQikgNddDaONqEGtMIwYGYmoyubSQmBDzPUCc1xnbbikPSRVit5ZOeYJ28FMYueEfoB/7Evx+P9ROn14pyXJHV1fX4nyyOQ0wabMDacM5z5QkRP+6FpSX3oRSQ+tCI667A/ShE9yIcG1tJb77qQPd3VflkstqgMV59PxMmzZ/u+eUKG9B6/oMRpatBH3wuG1EQJbbcxnhGQNmqtxhKQ/k+VtOrfJO8JjY9G8Qp03iMdFHgZ1MLvHKTi4DKGCJ8xZtTrfyFqQmNOIxhxF9fTFcL1yBnUYhog1lG5vzSJszoTyBx4STTuEwxURHdwad7BngixTATjvPo+c550uYbU4GnE6P4kxUT7LXiaSDTnwGiPN8hTWV56nyljOvPIGn2GUrUikWA5tSbGd398/pd4EXZpq2I22Rojx/BmiTC1LTOcZMmIsdBnacyg5RxKqSCjOrPOAr7FmmPIGn2BtxsTt63FrsKkAQnpDxt3Krqhxdu8GTNtKsGSBOnmB/VzsPARsecT0nTpkAUuOM9JtMBxYbBe3zQZSJumWwBpLqwxl3GbD4GGiHB4B9nXoP0Sm6vBXGvbCeGyEKQrnsFNOPeBRmogjB9beDNK/RvhVveRDG2p53Per78UKo/P9t4Amdgfr+PohHHgJ1X49923/FxVDR+kdvGYYyHx6E0bvbIPnuR6aOR/l99L6hHuSBOHUiz8npip4PRUMUQP7h9yD0+N0ghqcVJoNKygvmQHDTavBdvMB72Hxj+C46D0CW+LV+Ypj/Ly9oBiGUezNGU594chsk2reB+sF+w2uk0/gQBK5d5C3z1TegbNuFn7dB3XuAdjqGTMAP5St+jy+WXTIy5DPg0oXG4Mh5ZetbULbsahAmVIE0fxao73yUVU4f/AJiK9fjhc6/E7UCv7mcX0sNYU8Z7dARiN4cSb37pxdB6KF/oYAE8rwGkHDm2EgsTSbnDJDl8oXnGoPjxkXdtTc1eJE00roP29dsJF6QTPKNPZh1ThhfMBbF6VNcz+Q0QGyos4W0j7tBxY81rb5LCjdAKAuA//IfpRR77T0oHMxxyVy/5qQQDxzRsJE4qR//CrTPBpACdSDNPocv77aHMkCBGnzgThxEBhnLAR64qEDimVdAeWU3FAL5+81YzE02vqDjtIFj7mdyDeC7NOVldW8n/qPxWSADhPIAyD+YD8qWtzxlhVAl+BddknaPnJB4dDNPqZ4yUyZC4LqrePaR6qohsOQKO4FQ6tX7joGIScCJrBQSKst5CiPQLkk7MmQrYRuYKw7QWHb8a2CYuWhRIu/LC+fCuOfWQdkNv/QUkWbUQOXqv0Dlqj9D2fJrMFmMM37AwnL0P202fZ3IOgOkvBA0UiVxOPTIXcb1xCqHAQuziYPWcxiGF/+BZyEBOw/+X10GlRFcsPw+KL/jd6Ds3M0zVT7oA5jN/nkfJHd/6K1nNkHuXXO1E6qC4PvJha5nxNqpnE6U/nKBZiDx5FYI/HYxyJh+ySD5vCZQMgwggxLPvgq8lIhi+XHgE1Df+xjYaCLr2N4GYODKzpXPzOU2yDDTODI0nwGmEAhiirFkRCb0/mMwes8GKAaeBoiTqkCeO5Nfk/dGlt7KK1ULZdf/AgL44QMQjTZuhty6CxD49WWYuVKFntY3BKWApwHc+5IR/bS14/nfAeX1PbYBvvPn8ICnitMJsb4Wql66nysvTBmPlepEe9ZoxrSMMUtqgDO7OLOOBe0AltNjCR7cFNRUqap79qU9Q79J8xtdslQjxW77H5cvBdxpFLOE74Jz7a9eBtDiRXy1kLeswBii2n5s04swfPWfjOLOCwyKRvoMlJfx/fDwz24Ca7/PFMXjRQyGr7zZDkpm5ufE5tdBeXmX+3HM465EYGLs8S2Q6NhuPJflmXQdAxkG4G5eMxWgLjFt3Sh95QUq5XKYhrsvrUhq4LuZxwLlBWH8OAiuu51nSR1lsH/FRF0Q7sXDhVgCPU1NpNDGVSDNmQlnG4SqEF9M5Qvm42TqMDA4qOOmfg3nCXaBF2Gr4qm6cDhIe039iy+x0bqC70HPBnDlN0R4KULKY/tdH43HW7BLF+EkxibRNpWxa6gHmUgkeMqjtt7ZMBO0gwu1tXLlNVP5eCx2Fyq/ShAEZmeh5sbG7dRApcMFTqepZ55OXPmHW7DqnWfQxvB8BB1OyvOIdzV3O/FQwY+dL5tO2BEbuf7004nThjxvKm/SphU930qet55zrQNzsedIp4V04GbMBNFpzWmdCZs2qHwGbSJO5T0NIMzDmFCwbddvxQQZcZro5KSNZtImFo1G2tvbV1u0SXs+12AuOuHGhlrep4pOXrQh5Zubm1syPW8h56ae6ETZyaYTrRPYmKKW9ylRnlKlQ3miTUdHR2s25blcIYN39fYukkXxaTo9pD4qNVhHbryzsBW7EOVxhbUWKS2VbVpNzuesLwo+6KYjTzo1pIM3i07R5S2gf34UvhOwtqHywFphzWwTQeVbcnkeijWAcLC390qs/p4O19UFA2gE79OwkyghM0G1jYM2Zp4vaODi/9gDy44yn4/TyefzQSmANRmvbczyYFU+2jhRtAEEOt6R8XCB+vNQAlBViaX0mkJp48S3AAAA//9euXmGAAAABklEQVQDABZTYOKGExs3AAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Adblock Plus - 免费的广告拦截器&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAKe0lEQVR4nOydT2gc1x3Hf+/t6p8PtYJzqItDlRxcaAvetBiathClOZXYlkX/UGiJJWgipRfbPSmi4DU0lk6JSg5S5IClkEJJCtLG9tH1urT2IWm7gaalPthTYtIcaiLlYFuKNC/vN6sJO6OZ2fk/7715n4u9qyHE+n3f7++b9yhoSg0FTampgkKcWqkPPuiHQbK1UWOMDJrABin/Ewh81X6GARsK+m8QIMbOc2uEkXWTsDUKZA0INSg113o3e4250foaKAIBybCMXN2qATOHuJEO8a+GuLVqjJBBwg0OOcC4IAhjBv/tGfyjwUXzPgqkf6vakk0cQgsAjb1R3Rg2GTwJO4bm/8dDIDIMWigMBnCNkkpLdFEIJQBrdVc2j/O/PskYGxbe2GFpi6JJCVzr2+priiSIQgVgu3PGtkf4L+m4Mgbvxo4gCKk0Fo7+tgkFkrsAOle5CXA8r7gtMAZQ0qSMNeaPzqxCzuQigI6VfoYnUDVtdG+s5JLCKmF0OS/PkKkAJi/+ZhjdO/+HjWmjR8byDKRinl344awBGZG6AHC136tscIPDCP84DJo0aPJSc3nh2LklSJnUBGAZvrp5kvuxU3q1ZwbvPZA5UjUbaXmFxALYcfMn+V+PgyY/KFlKIzzEFsCO4c+AdvPFklAIkQWgDS8oMYUQWgCTK1NDrEIugDa82EQUQlcB2MkdH37UQSMLa3w4Nrd49NzZbg8GCmDi4vRJxqCus3ppwUnl2aDy0VMAOs4rxyrpYae9woJDAOju71c20PCnQKMcPCzU3WHBsSXsfnXzKmjjKwvmcRONKcfAybkn0NSxXnkI2dv5UW8KLTnOTaFl2ZBRboY6P2gPUHK0AEqOFkDJ0QIoOVoAJcchANyUCBql4bMdh40dAuCdIi0AxSEkQACa8qEFUHKcIaD9tqtGYQhtv/5u40wCiU4CVYdtm+udn50ewGTroFEaAjQoCXS6B42CuMK8QwB4HApolMZtY+r8oHMA1aEQJIAKtECjNP1b/Q4bO0PApqk9gOK4j6dxCGBhdNbQ8wB1YWy3h9/VCdTNIHUhwP7r/m63AEz2PmhUxXB/4TEL0L0AVWGUNN3f7T4qVoeAruzp6YfvPPJteHhgEO599gBufPg3uHtf/NTJXQIiuwWwbTahIt0Jsrlx4Ev74YXDv4B9ex764rsjX3saLt28Apf+cwVEZuHobNP93a4QoCsBf/YNPAS//u5zDuPbHDn4NPzgse+BqHhVAAj1/pLphpCLtvF/abl/P1AEQT8vEq8KAPEUAGO6EujENr7Xyu8EjX/oy18HEeGj/qbX954CIIRqD7ADGvWFwz/vanwbFIuIUOLt1T0vjHiw3bvaV9m4ABJwcN+j8ATPyJGbd2/Bzf/fSjUjf7b2Yziw9yuhn8eqQEDWvBJAxFMAS7xfPNF40RD5ZVFcmZM8Gz+477EvvnvikW/B3XufwPy7b8KdT/8HSfnpN5+BWkSXfufTj0BAfD2676ZQXgheA4H5yTeOOIxvg67aytQHkh11YGX1j0bL6lF8N+/eBtEgjPja0n9XsE/SIAIYZ3G1+4HeIYkI0PhY20cBjf/yjfMgJJT3dvx+5PcDzANAUA7t7+6W43oCFFZU42Pcn3/vTS4CIdsnvvEf8RUA5gE8DDRBQB4OaVQUAXbtwtbm2OU7wZO+qLz9wSW4s54858gExgJDefCLIQGxo0iiZNqYwT8bwqh2ly8q2AK+8eHfQVT4eD/QkwcLICB2FAmWe1HATP5E7Ue+Pw/T5fNChv4/9AR78UABYOwQcS6AmXbUcgt7BV6xPWyXz40UxuchvNuZwV3fDSTMXAYBmX/393BvK1rTxZ3dt6uF6MZHly+B8YEBNLo9010AFISsBqyy6/r5WCKwS8hJ11g3DHfWP4Ll1h9BBmgP62q7UIP/59+Z/kTUA6PRmHEydwwj2EaOAorupT+/Kmq71wGOfxdHZh7v9lyo18NFDQMIumMsw6ISx/jY6JHB+Agf/vwu1HNhHhI1DNhcuXU905hsG1/QRo83PeF6OKEEYHWSGBF6RIxZ+Z9u/RXSRvAunzeMhb5VLPQJISRERlk0b31wOfWmzButt8Xt8vnQrfnTSWgBPDB752TYK2i1ZVMayb71z8vQ+vjfIBnGwrHZpbAPhxYAzgYqRMzZQCfosl++/roVt5NghZTb6YeUrCE02hQ30iFRDMxQmWXRWCK4EV8EknT5vKmYXS+K6iSSADAZFHVC6Kadub8euVHU+vhf0hqfr/6lqPcGxjgmjgnbE3ATtVuIXb43JOnyeRKjXxPrFSCRO4NeHNi73xr17qn6T/vQ+JbHkKTR40HztWMzT0FEYh0USRlIkQvYYBn30rVXfXMC7B9Ibnx88SOWZ47lAcZW6oO9lc3bMl4oibMDfHkDvQFuH8cXO0XcyBkRg6/+aL3tHeLfHt6YrjPCzoCmcPhCHI9S+3cS+6xgWRpDJcCIa3wktgCwMSRbLqAifPVHqvvdJDotXHuBwkm0+pFEArDawwkVqIkPJXAaEpLKUSATjel/AGE10OSG1fU7cm4cEpLKhRGEmomVqIlIxJ6/H6kIQKYZgQrE6fn7kd6VMdtsXCeEuWCktfqR1ASAh0vpsjB7sOxLa/Uj6XkAaJeFwPQ5g1mBYTZp2ecmVQFYbxRTljgz1fjQk/7vNlUBIO0dxEyHgpRhLF3Xb5O6AJANs7+uQ0GqGIsjs3XIgEwEoENBupAeFnmjR1gyEQCiQ0E6MIDTWbh+m8wEgLRDgdhvFAkNgdXFYzNzkCGZCsAKBaY5qhtEsTBIlWXeYs9UAAg2iPTEMDqEsPEsXb9N5gJA5tGN6XwgNFbJF3C0W5rkIgBE5wPhwEFPViWfF7kJwM4HdH8gEKP/s95cR+u53w3z3OXpGtmGqzJuKc8YA+v9POJ+J7l5AJvzz5xrUdAbSNyYFTKat/GR3AWA4ESLMF0Z2GCzBxcGFECh14NNNKbmeL1zEkoMZvx5Jn1uCr8f7vnGi0uEwAkoIUUbHykkBHSyafadKmN5yI2/XLTxESFuiMSXTfvo5tWybC3fMf4YCIAwV4SWRQQiGR8R6o5Y1UUgmvER4S4JVlUEIhofEfKWaNVEIKrxEaGvCVehRBSh1Aui8DIwiMWRmTGZO4aiGx+pgOC894e/NA//7PuEdwyHQSLw2JbXRmYz3c6VBkKHgE4m35kaM4G+IsEU0cDBTlG9/ahIIwBkcmVqiFFyVeA7jQsZ6SZB6BzADe4vJCZ7SsTWMWb6A9t9j8tkfEQqD9DJZGOqzggR4pg6HOdmvX07K6QVAIJ5AWNcBMWFBMPavZvTBs4skFoACOYFUCEX+CochjwhsDqw1Tc+N1qX+p0H6QVgk1dIaL/kwut7SV2+G2UEgGRdJVjnIPXk88JGXiglAJu0vYFqq74TJQWAtL0BXUk6UFJx1XeirABsElQK0mf4YZCqERQHawu61TwK924iunscQFlNHcWNjyjvATqxSkZKeH7gM2LmIhkw++uyl3ZRKJUAbH51ebpmbrNX7N6B6nE+iFIKwGby4tQw/lkGV+9HqQWgKUESqAnmcwAAAP//keNKtQAAAAZJREFUAwCHwIkPLb1NPwAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;AdGuard 广告拦截器&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAG90lEQVR4nOxbC0xTVxg+lEKhlEdpaQstKDDeFBxQeQlMsgnTRdGoQ80WFhOjmcyAEkhMGCMaNDoThS3ZsiiZUZxMiQnZAjrwgUOjNFAI4oNpAHkWAaEdBdq7/8hi7JMifcDVL7m56Tnn3p7/O+f//3P+/1wqshIG29t3djc05KpUKipfJDrhFR39E7ICqMjCkMlkXkP37/9ck5OT3FlT44zLlqWkfN9ZW7vVSyTa6chkPkMWhA2yEAiCsH/e1FQEQm+7WVy8XKlQqNXb0mgoubDwmX9aWgU/OrrIxsZmClkAFiGgVyz+YvjBg9z6wkLhi85OW0NtXb29VYkFBe0+q1b9wo2IOAVEEMiMMBsBMOIUaUdHJlxf3z56NKrnzh2H+TwviIubTMzPF7ODg3+A6wIQoUJmgMkJAMFdBiSS7IHW1vX3ysoi5iu4JgSxsVNRu3Z1eISHVwlWrjwBRLxEJsSCCQCB8Tv8+sTiTJjeyYMSSVBzebnPy54ek5LrIhAQK7KyujgREQ/d/f1vekZFXYDifxaqImqdBGGc4BYFF2340SMGVlYVhWJnR6M5yQYH6TNKpS2FQuFPjo2xFePjDMXICEc+POwJwvOe1tW5yQYGkCXgxOUi39TUUSChn85i9dGYzEGas/OEg6urFNzqc6qtrdKJw5FPKxQyiko1rYRnWIGBE3DDllcMpMmQHgLW/JmdXdPd2PjqN7bU03L563rl1BSSS6VoZnISLUZQHRwQnc1Gtvb2r8vs6PRXHgbDOz6e+LS0NB0IqH39jMY7iBdPnhB9TU0Wc4+mBB4YUD299QwOB9/UjKkWAcAOIisICgXbCzWbQdFs838jUoIyazDV5NOaARQzLzysCRtjCLAhMQFoVr0NE4BIbAOQDhugTcB7G0BeFSCMUQGCxCrwzs+A90bwXTeCxqwDlLZUqhKRFBQqFe8DDO4FpmHnZJbIy2IAlUbDg6sWjNQkYAq2lDOIpICtMZZNLdiqiwDyqsDs7DZIgILMKmA3O7iGCbCn00k7A2B2zzkDZDQXF9LaAAc3Nyzb+JtlmgRM0NzcSDsDIGiKCZC/WaZGAF4otFVUzCslVaiyrskoplCMbgvrgCnNeIdWchSC4BbJyVkDEC2e1izTJsDeXoFICl2yaREAXkCGSAo7HbJpE8BgTCCSQpdsWhYEfOUI1dERkQ1YJpBtWKtcswBWgo9d+HwEGSJkDOZjha0JSK7izZCWUFq9d1u+vIETHk46Q8gVChUg2y3Ncl0q0CKIi5MikkEQHy8F2Vo1y7UIgIWClOnvP4ZIBqav7yiWTbNcpwI78XiWSfRbEHQud1BXuW4COJzrrKAgRBawg4ORE4tVr6tOJwHswMDzwRkZQ4gkCNm4cYgdEnJeV51OAkBXnviuXq3/pMESg09KSg/I1KmrTq8Td/Pzu8wRCpd8dMgjNFTl6uNzWV+9XgJYAQEn43JynqIljoS8vKceISEn9dXrJQCmzDhfJKpx9/dfsrMA950XGXkVy6KvjcE8GEEQjh1VVfd+27QpDC1BbK+ubg9Yt27lm8fiNGFwIQ8P/ssLCzsq3L59FC0xCHfsGHX38ztiSHiMOXcyzKCgs4l5eb/DWnrJRIpYISEzcfv2VbJDQ8/O1daoVDCogm13Y+O1Cxs2fCQfWtzLA7qHB8q8cuW6d3z8xzD6cwZ4jdrL4hfBCz/LrKq67uzltWizxwwul/j80qUG6Ot6Y4THMHozj3XJOzFx7dbKynrwq4vOM0CfiM2VlTd9kpLWGLL6mphXNAMbRUFCwtotFy9W+qamGv0n5gb0Rba5ouLSsqSkNNzH+Tz71sdB+pubCyTnzmX/feyYF7IiEvbvHwjPzCz1EokOo7fAgs7DjDx+nNLX0nLqj717hRP9/RY9W8Pg8Yj00tJW/ooV3zADAm6gt4QpPphw7G5oKBOfPp3RfOaMO7IAwrdtGwU3d5UfG/vVXH5+Lphs1KTt7Rl9zc3f1R44IBzv7TXLbMAeaM3x462ekZGF7LCwK8gEMGlH8Wx4fvfu8YfV1ZsaSkp4hNI0eVYbiDzH7Nkz8GFW1lXPmJjdCx11tXcjM2Cipyeyv7W1rL6oKAYIWdBHUzDNJ1cXFd3nCYV7GQJBCzIxzGq48PeC0o6O/L/y80PHurvn9V8MT0+UfPDgI/DrP5rz+0GzW26sFj2NjcXP6uq23Dh0aNlc3xtBdhrFZmd3gWurAdeWC4KbNVVnMdcll8u9e2/dOtlcXp7aVlHhqqvNB+npL+Nzc++Ba9vtwOEYl5paICx+Lnaiqyutr63t22sFBdEDEsmrz7vcg4JmPikpkUDw4jDkJC4jC8IqB4Px7rJPLC7ovn37S/wb9hi/ekZFHTF2A2NK/AcAAP//gOinDQAAAAZJREFUAwD7y3CaRRqAxQAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;uBlock Origin Lite&lt;/p&gt;
&lt;h2 id=&quot;youtube视频播放类&quot;&gt;Youtube视频播放类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#youtube视频播放类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAIFklEQVR4nLyaf2xV5RnHv+855/bejl5b6gBbWuag0o1JOzKUaEYCcVmWzGWbWZY4yJD9cCgkW1y2aLZkyUbIZJtoxtQqKpVqFyVRoP+oMSCoYPxDbVVKQ5WWNkABW3tbe3+c876+7+k5977n7TnnnntbeMjlnvfHed7P85znfc5zzq2BOZBzTWsXjNGp782nxk2UsO8Y0K+joHV8KOlMSVGC4SzYUIKSnlHNfDdLsq+39nePYJZCUKa82dycXJat+aUO7S7eXC2PUTAworQxsx1j5Cif9kJ/xdiz3z11KoUypGQDhLeJmXvAIORuCsxDGeBU6hM9vD/F+55KapU76k4fu4grYcDhdeuMbw3m/qQx+pdSwKlzJIMzqc+eQ6Z7NIZUipjbxxprHlp/5IiJuTLg8pK1KyzdbEdIqFAVqgRwjz7+bUA7MaSnN6/v6+nFbA04v/SW23WGDq64Oip44bgA7gENAJf1cZkwCdvQevq9gwgRLWzw3NfXbOWX9ZCAp9OxCotMw9vHzsIM3jZ1Pk58ezxuES9s4RzmfPLnV/H+A8ebWu4JYyRh8ARkt9uWPR5lYwZ53O+KUWVtdU9Nwbr3ltPdjyGqASJsuIpDM5ReZXAqXZ0KaD/2C6cZBogNm9NzJ7iipKxEVSqkattmJFatRPrTAaTa9sG6eNmGVkHV86OCK+3xSY2uUTe2xwA7VQ5kjvM4XV0sFV7D4as3/Cx/bi6TxqVdj2Pq4CtzAu6uSb3z30s31N4sp1jPJhZ5PkfoanVjiWMLhY0p/iXW3eqBicUTqLv/D1i852HoS5d4QEwJ3i8ZqJvZlDazfA6fv6rm7Nh98rp5+8Ud1qSZfr5xk1FSYf3+pxBbXAdVqICyTEx2vozzT7aDZrN5CFtPSPpVvO2Zz/JGsYkaqi1z66j8FRDlAT8lGTUVBglPuzA0ww6v659rQ+Xq1nyoBKVfvyvkzmfOfMm4qhRh9+e5xX+iMPtarnrYLFSPRTNK44tPI764PtAQKsV2qutVnG3bA+vyaGE8xOPMP/4dLht6Qtdy9aIAtK+AqCpd+LCbD1XGgsCpktuSt38fTe2PY+GPfhjqcXutoPiH54pV6VZ8oxi3DZjQ6EYZXChSwdXLHgVcloraWix84Pe4/l/bEb+2NhBc9njQnd5mJuYm8U0+WNaysIrFL7jeBqLl8KUvPmOHEC3jicJKp3FmXwdG93baUFDWYMXazpqLLGORVsEqbpO97WetetnzysqAt8vmRAJLf/trLG9vw7yWG/NrqGuq6VytwwS7pgM3+53kBy4rooguTPrIR8mmZVix+yHU/XEbSGXC954QlMGE9MQ+X6VVQL/R76Sw1EZDt/FMcNUEWYiuo/GOn6Jl7x7UtLQUIoAEg7t8ldBbtSliLvErZxHBA9HBi0uioR4rHnsETdv/BqOmOr9+WEQwRho13lnvd+su5oG5AldnLlq/Djft24vYN28oGhFZWNdxA5CAD3gUD5QLzorMNGrno3nr1uCIcPoIQaXhDpRYFeZBoBwVA48qX6mv94AzSQeTqgKDe3wSzvNuZHBy5cBdufTmW6Hgdh/DlMEniaquOqgqdPvUqjCKlAMOy8KZ/ftxqq2tsFmDnuwIBgw+OMhn3BBWXPmBWyF45YCLcyZP96PnwX9i7GRvKDhzeCaJecGYYrQ7Bu02P/CwqjAIolRoW9IZu7To63wOVi5rl5t+5YwL7hqRZLFu41oaf3dcy0UGZ2EgpYJzGX3/fXTv3Ikvzg56xsLAXRnTsscN8ZbYConvsOJqNuBmKoWTj/4PQ11dvvoLa3jbsqOrrPgxzXk0eyesnPVrlwounzdy+AiObLgTZyV4Vz9FweNUanvLb74HGTv2i76+S/Z9gO+Vdh53a2QPqB7xtCNWoaqxmZERfPTIwzh/9OgM/S60arA3tAvtBLRO8W0bYOmZDkpjO/lQlapYVSK3o4ITnhqHDhzER7v/C5NvUr+MIrfDwIXwamC8AXqHOLafyMSzpc7Ik37lbFhN5AeujonUeHzLFnyw6z/I5jKeUkAtDdQ17VBx5kAyzAR9wv1BxHAHBrXMjgXM+I3mvlYp8qZMhvYVKTUKcL+MIp/vvVnOvMrSfWr8Ghp/0O3Pv1YRG4LP2VFKMRcEL1LjG7/ajA+ffRoZB17eiIWNWvA4dUJF9rhfJZoB/mGzOmLICxsNC/9tDo/8hCtco8aimqGmRj9DvMH7WsVNjQNdhxCWCl0djMyM+bA1uSEnFvQO7JLX9LxaFO8cDaLfxfdDSrbcr5zt79hnb05Xhl97zU6NZzh8sVToetzKjzMZ0ndNHtrjFPqmn0+/5cyLb0I80Nz8A25EF1er570F15uFGmVe4xLUtrbYG/Vi78coJ6MUIL1tWYTBHOSOu08OvARFAjP6/5ub7qlk+qN+4PJC5abCYuDy60vG2O/u7R18Aj4SeksSRsSFEUWqwllkFI9OFZzaPmNbguCLGiBEhFOOsee5pvlXC9xu89+OK0A2+YVNSQYIObx85TcuknQnX+Lbc5VRgsCnvY53xIbd1vtJH4pI5Hdr4tebc+eG7+M+/Kv4DeFKgHNtE4Tpf1/Q++kuNdvM2gBXnl++/KsGYX/mTxBbeBmeLBYmbl8xcP5o2CbusPJNKoqU8XZzWsRvCkOwNqZB7+Ra1kZJhZCg7cV5qPDDZ1pYZedV+2MPPxFXZULPrKUMt8ZAVvJr38ANsH9/4iFWy0E/4zeuC3FGBnNgPRrB2+JhpFRv+8mXAAAA//+f+3gdAAAABklEQVQDACD4FqUXowSIAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;&apos;Improve YouTube!&apos; 🎧 (for YouTube &amp;#x26; Videos)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFe0lEQVR4nOxb224cRRA9Pbs7e7HXNjaOHSe2Y2wsEYSChZUECSEhPgDxDUhICJ6DgJd9gOSJD0BCCh/AEx8AEiCRWFEwChEOiJAY5+Ik2In3NnuZaU5Ne7MOckIceXY37j3SeC69O9t1uqq6qrvswHI4sBxdAmA5ugTAcnQJgOWwnoA4ngRLJ7KoZNKoe32IOynUVS9iOs0WF1AZBEhBBW54r1UfzxkoJNmWhA5ScFQcWshXCWit2VbnEfBzNT73+J0KnKAC7RT4+Tw/V2NbFUp7UKrM5xWgXkQQL1ACD56/gVKyiDdyHnYI9cjWcx9OIJGYge9P8e4AO76fHRzkt4Z47uWzAR4pQIRXPCNh7v/nvU8OIYnCCxlChC7xt8v8ubu8z5Osf9h2m31bZV9X2P4X/OQlzOfuPOyF23f0/Efv8YXv8OoVPP2o8jjD4zTmTn7138YHCfgltw9B9RteHcPexI/w3be3akSTgJ9zVOfqEq9GsJeh1E3oxAuYy92V2+YsoKpfY68LL9B6dFPWEEYDFj85yoazsAlKHcPLny00NOAD2Aat35dTfPPmNdiH1+WPwvkTY1Dxa7ARTn2cGhB7HtbCnRUTmICt0P6kQyMYR5QINAPkGJBMiK9BR0GrCRKgRhElXAq/VgDWi0Bfhm431jlEKIzKNDiMKJFkUrhOAr6/APz2t4k8smlzbj8Pw5KSDiBKyGgLCSLshSvADxeBa0zastSGtNteErTud/gni6ihN/1Afw9QZMq+8Ls58sxk+0lEIt4ms1BZmQWiJ6ABETLNdZGAaf3VVeDGGjDF9GNq1PiHkqxz+BKmokXIig9Io5UQEkRAMYEYf35phUkqzeKP68ZBhv5BtUojUqIBrSWgARFQCJCRr3DFa/EysMI0fXqMa09D1BJqQrkatTak2QPtop0QIty4Gfl7nCoXLnEpjkepavxDtNOmeB+VQKdAZgUJnFY4S9zmWug0fcOhEWMu4jzFd+yuRsTFBGLoFMhAi4C91IZaHbi4DFy5RRL2AePDRhv8ALsIRwhomcvdEcQ/SM8KnCqLZUQFIcBHJ0GELleMKUw8SzM4ADzDFfiSF8UUGQgBNXQCRDBRe4kFBhmaHGaSOjbIZ74JmBSimBFq7SdAhPIpZJGCZxgkvXTIBEbJuFF/MfnojDQkIDoDexREKBFO7FvsfYbz/3MUfKDHaEE46ipqD1VuHwES5IhHFzWfoZ0PcwuxWjexQCh4S3wzCVAotCwja9i5R6sbyppRl6hPAp18ufmZVoGyc5dWbUSek4pQ4tXzJRN7vThJ4fdzDnKM7e9+gPN4oOySh24gSjgUrMoR9yjo7EEjeDit8b7st1Ldt4HeEBO4E6kCVKjyPdwxf/UwvTsjujpHe6PUZsE3QdmlUOEmooRkeiP9JowteM1wtxNA2UmAXom0Q2ICEszUNgPOTgq8KTtNQC3DVlB2B7HgT9gK37nc2B6/Ee6b24VVzJ0cNdvjWp+BbdBYkFOjPuBL2AZHnZbTlhqhj7kQh1nYgWWq/6RcNGuEfP0W7MF9WZsEzJ9agqOP0zhuYe8iD8d5k6O/2HjwYK3wkVNnkUhO0zA+32NESMb7BRx3Bkc+/XZrw8PjsnPvJhAbOsorBvHODAk5aErMFBN4MLYNy2S5Xi01wG0Fkw2pL8Y6peFaOtZ45r4brnPB5SqH+Fd47k84nts26dt5YPpdLo4hL8ul1H6mkxlop4+k9MLxU2GhtL5fNO3y7S7T4GS496DC5XfJPST6jEFpZQqmw14EfJfmd322+WHxdCBbQ1Lm2iiU3lIjrFDie03htC/ZbFDi9T0EySLmc6UdSNOhS+ItRPcfJmA5ugTAcnQJgOXoEgDL8S8AAAD//yAsXS8AAAAGSURBVAMAxu3FekIjIm4AAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Adblock for YouTube™&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAJhklEQVR4nLxZa2wcVxU+996Z3axt8rIDhLxQqamKpSSmchxXRXVRhVRigVBrS6VErUoVVCS3UEACBGKjIFX8gTZqI1H6oxFIoY4Qj0Zyww8wipX4KSQHO6Z108pNKrdN7NiOXzsz9/Y7c3f9XK9nd+OcaLKzs2fOPe+XHYoERhAJQy/8/+dE/mHSIkUC/9YFcE7mPMf5NTVXnqakkZQUOiv2mvQyL78weBe5G/rxRJEODAmxTgIAjNEUL5Xkzb5FwcBeeubrc/NCLQMnMlGpSsibY+aDtNiRJDBUEGicI0nrBNF2XDQXEspyYHQBAmNIshKEYhXxDf8f3uYCWYihDCsMYsBrVJnOhRldgCxnxJSguJI5tTydgjLXz9nyF4B5YaUnXEnH7ttOnylxyDMrrauBVOoqOjU4Sn8fGCMZg0cU6E+5IG8BMjykEMftV6eoPKHIzyKAgQAxWOft0bl5N1qPmCnMhYQNib/1X1/7RGYersaJKwpdyjO5FRUDiYQTatnkRgutsRYw27MwpacN5VNhCosB5IWyuKTn799BFXAhL78zVwDzXOII6hmZpt90jOT1bmExAG5n4RL/fHectmzIHgN50cT7LtzsnRtzlC8UHAM+1PbG4A26pcBacCTlE8r5CbDMlzk13mpYSLUmUvBEFyBRYijwUNSnuQ8KC/uKvA4MtCsCn8WWLhMawY2DVpATce2DDBhihn//QQnNTJyjeMmXyfc0hJFLLMLMxzbIsMnTPhUXFaDlxhVNT/yJnvvS4XkeChLAcmc7wZculZNW1STkDAX+SzhkP6Vm/VDjpZsVzU52wgmSaMVSyP+FS8BK8D1E9HgPPXfvTE5UigyhaxAdxTu2vf4X2usHYIkUuYkYzU3+gT5X9iw17ZpZrfXNG3JoPgMrYiDMiMmkoP7+ZcI1UdsDVeLk5/c4ryGLKs+X9KlSoqkJz536uHn2x9WvmJYW9Uzz8Xj5yFGQSS55+4Mt280rDx7J2VmuACHWxBeLGJfU2CjE6dO5oyYz4JwYbse3bVSx6xA1iaEo2jKNjSo8dK0z8oBQAJNMgqkk292Ye+6pINf9Anrx0lUZ0in9RO33n33ivXOv1/edGhrd+ZXyrcGUt/opPIKK98SFC1cz54lkMj9rrEY6Q8zU1u7EsAUpxLeUEFtzNlX829y0Rwr9soueQudUaJhy0fxNS63/jTd/KXp6/svWuBWWCLlM1dTsB9NnpFI7KAi0b8za5VBwmxmt2DAwQdAXWus5o/VjTk/PX4ztVYuyhIDLbNJKXZBS3u37PpvaISq6EGUHYwJHSgcc35RBcK/o7b1YrBASzH8XmrnbDwIP6TcmKD35rscF5cC6HpRVhpXJT0IOkDioCJDQwDfC4dm6ze0AxechJurZ+hwHxTSzDhi/M7wT4nYJIDhswPSnke224Ps4LVS9JYIsdy0W9OgyHPb3OEU+Ov1utLhdFdIrHkm+P680kR7eluFJ+xMEaWyU6ay1BMdZkxUpLePMdJDOekotPNPFp3PWNNypBHGxFecZ0ERDiI6wu/ujcPy2qT5Aqt8I9I3zOEqlcrfTzOj0NPJsimjDBqLSUsv4zZtoJmaxGIrxYFyQEIYr92JwnPsCrd+Akm6m15aCDhy45BnzMzp7tiuoqXkevzfheQI4aNvFRhA5u7oATGNigqiqikRDA9G+fSS2bLGH38AkdvEimTNniPr6MCCXFe1WEOB/wvenpDFbyfo+a7gOdaMF/L6rXLcWLpdZMPrAd6C4LuHV1HzsCFHhW5UsbD2hYfHUUySefpqJZ7aJGfXZe2jevPoqmRMnrDUiAJc+GQ5DxgfVu1CVL8N9XNQEDy5yDEz/wvfQShvjWFaQXQCB1bqtJUrFcD88ZcyBlZmHfX5ykkRjI4nmZvvd9xf8n4Hv+RkEEUeOkDh8GF3plMUtBHp7LfFE4qj2vD9DuXEUPOZdsarAu+Z7DnzHdWMQfgzK+05ZZ+eHK09kf4ZLiEceWfjOjMEKprOTzPnz1iJKzbuNePhhok2brGAFzjFhLWhrC+ShQ49p3/8BKH2oMrSEyKyIA+P7//C0rhNdXeda0E8tFSDtFsjPWNSULDxnAa5cIfPkk2Qef5zM0NBSRjmQ+Z08gllwp7sokEUmPSaTpLq7X1R79uyC2l9nS7B80PqMcpz7ZXf3N+MNDW9zZmpCWl0axKxR1u74OJmODhK7d1utsrY5gOvrw4wktm1L6yOw+LAMjY7aLBVRiDDHx2LLC5fd2D/0UBw5fw7xOYI2h8LxTohZ0H4nRGxrk6KtjQfvLFsJJhGPk3n5ZRKVlUTV1ZYpMCePH7c4GfcBHg0MkObnbIGImQjUNDSLjZjPXcAQFCPBlJ4XYmYmSN9/Mf1pPxxHpQWYD0hHZBOAtYpA1shAHKBhGt21yzIecoCzrl4l09pK5uRJWytYmAjaF7aV0OyCRsrv4dGbzLypr7fKnJwU0K6XOniwFvQe5OTDseAzX6nUigOEX1PzPhB2LkmjDOz37CJctDZvJmJ3qqiwvn/tGtHwMNHYmHUbFjjPYmasFXg18zuc8VMxMJDKtNapurpqFQQtyEN3okvmFlyh+buGWlAlzp//KJ3EQ3MzjbfwdSfMqe2fj2hByywEM8+CDA4ubSU47/NvjFdAJeaU6KNKIaf/0C8tbUClbUXQjuHRPkw9X4PPl3hBYDiXMrvAH6EdO64vp+OgSvwVn19NbwDUUjWZhdTIrcTizLO4NyocBDSslZSV4KMyfCJ5Qg1CtcAC3O77xJbS+s2w9V42igqzd2+pSSTaIej+QicykQXf5LOhtTGh59Oqbe05VnxXKWQHugIhDvJSYLH7hPKKvr4pMP9tmO6yE4vFHGuuoqakvMEy7IQubCuuYD5cAPL/NSj20TTzUixTjAxb1Y6OS9OOU4cy/iKCZYSRHJ7/ol1Z+EHGi/7+ioubCPBxPUilXoP31Li9ve0hn1lm58V7IduXc8+t1G4vlSpxcy2qtGatTSMD7YOp/8h/MwsbLeRqWPOU9P1jUOEm4OUXKHAjDM1zbiw2LNrbxzKbwtX2SPlv5hbwbW9YV7cVQdcPaT7LAzuyigsBfqu6un5U7O4n3ORVVZlcS7DFI53ODNjGDvs5L7IrGRe+iR6CTqYrsU/WEpbu5csyCq1VrlCZa23wVnSjwq6WdZQLbXDYj8jy8l8Fnnca7pPgoiYzlr3jDh2VVpYr8sKsYEg3X4JaW1PoHh/lkQ+B9x/Nae82wScAAAD//+q+mfcAAAAGSURBVAMAlbahqws3D5IAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Dmooji - YouTube弹幕和AI角色聊天&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAG/UlEQVR4nNRZaUxUVxg9MMMyAzPAgFgZlkBtaxqWGPe4x5qq/eFa1xg1akzUaNTELcYa/aEmJsa4JBq3Gn8Y4xL3hUi1IJZqNVZb1IRdsAJWEWQZhqHne8zgQGdgBhiWk9zAe+++d8+3f/eO+jqgDwCSdcBAX8AbPQAmwFIOPLQA33ndAzJCgcHogSgFfvN6AtT59BDNN0ctLaHuqeQFwr3HkrfB4wL49e8PT8KjAqjDwxF+8iTM8BxcEsBLpUJb4D97NvSJiTAlJHhMCJcE0K9e7fyhlxc0w4Z9/qBWC/20aehz7Bj6bNum3Iu/dg2h+/fDZ/Ro1HN+R6JVAXzi4hC+ZQtMOp3D5/4DBkC7bh0s1usSsxl/VVSgqLoa5poa5V5NZSWKy8uR+e4dauvrGyZSEFVYGDwmgBDWHziAuKdP4RsSgvjXr6HesAHmZonLj9ruNWkSyqh5ESLUZELI7dsoWLECf6xapcxJmzgRJZs3Q//8OVhBUa/RIObWLfR7+xYhS5bAIwKYqbF0uk7q8uWooyavjRyJP3fvRrXF0mRe8IwZUJGQbvx4vOe1PA3kMHBU3biB4owMaHJy4Gt7gYIaL19GIOdLFo84cgQGCttWqJYD2xw9YJFACM1d/uwZLHSjWi6khVL94G80ImzhQoTv2YNAa5oMGjECflFRqKKwXrSWHwX1pjVyHj6EDzWtLEbyCVevImTcOOW6PC8PfsHB0NFCdZxT9egR3IXXc1q0pQlCuDA0FFr6r2hXt3gxErZvhyYiwuH8+ro6FJFkztq1CMnOxkfeqxbyAQFI5P3gMWOUeQ/Wr0fm4cP44eZN9JYkQGW9WbkS/x46hA4VQCChKERkYhlHBU0fOHQoYuk+SWvWKHNKnzzBM2aaoitXoC4tRTDviYjio1WBgegr5JmFhOh9vpO/bx/YROKfoCD8+OoVNKwZ9bW1+JvXqKpqXFtNRZmLipxycymN+nEEibTWv0a6hy49HbnUcunjx8qcp5s2oebECUSQfDivxeclJkDy316/3kg+lVouIPkv0OCmY8Sa4eHKN7LOn4fJjrxPTAyCduxokZvLldjXTgjbi3qOgnPnUPP+PWpTUhRBm4BuY6RFtEwACnlmpUK6SG/r47idOxFtzVRZ/E76/Pn4hM8uoZk3D6G0chWThDM4DWKHk9GgtRq7e58YG17UYCW1Zw+1Xo8k+nfwqFGNmi88eLAJ+ZiNGxvInz2LtLlzEckaIuT9kpLQh24Wynd8GeT+dFczn1kYU+JmTdaBm7BZQmJBFqvPzET23r2f06SVfCLJB1krtIWBrSoubiT/JdNxNINYIU/Np1HTQl6s+ql3bwRNnQpf1hdfg0GZEzR8OMo+fMDrkhJEJCc34eNSEDuCyU4I6XNsmlAzCEXzemrNHkqA0kX0gwYhipVbkE2rpc2ZAyOf2ftyJRqSRn+2I98sWIBzfftCnZur1Bdx28COEKC5EI3kWWH1Q4Y4fkHaCGsvlH3hAtLY7NnIq1nt/WNjUWFNCgoYO19v3YoXLHr2AmrthGhXO20f2K2SF1jJ5zMric/baz6EwRrGGmMPU1oaXuza9T+SYqEK6/9ux4AjIQwMtFj6pm7gwFbn51y6hF9nzkQkq7Sieb5rmDABUQxaPyYDM2Oq5OJF1BQWwpcWq71zx6GWRQhRR7s3NCpq/itq3hXy+eyNUmfNgtFKXlDWrx/q+K64kPRU9exuy+PjG7tbnxa+Jym3XTEg5KWr1LTkNjbyDOy7U6Yggr1S8+2RtBoGNo2GwYPxkj2W+Liru4Y2u5Db5JkaHZEX+HN8pNuYCwoQAPfQJgu4Q76A81KoeSM3OC1tTG3p2Afuwe0YcEvzzDYpkye3Sl4gLuMueYFbLuTNChtDd3CJPAP2l+nTYXTiNh0Fly3gzcYsmo2ZplmFdYQ8buLF513RfHvhkgBCPobuECCNWSvIY99/j5qP8LDmbWhVAEXz1KjWBfLSmN1lE2bsJPKCFmPAW04P6PNa7ndbg9IS23WVnQWnAshpnPH0abfIGzuZvMDpemFyjkN3aA2vKKRtM9JZbmMPpwJk3b8PS7PdT3O8PHUKD1j6I7lh6apzeqfrVnOPm8x+3WJ2fCz74vhxZCxa1KXkBU7XVs4JuOm4w11UcyEyjx7F70uXKqcTXf0LSYvrR3LUnDmDmyxKddXVyj0h/2jZMkR2A/ICl5q5XI66sWNhYJ+ezQNfIzca3eW3KZe70XyODxxystCxJ/ztg8vNXDSHnOZXoHvBrW5Ua/3bnYTwNrn5gv2RRldD4tD7LdyHCOHu1s8TkDLrncsT7gI0Pe90BQHoOiFE81KZsoA3EgOncoD1Oeh5YPr8WfU9kKpqOJ+K5dChZ0B+8TjUC/jpPwAAAP//q+hGuwAAAAZJREFUAwCPy3sGuwqxqgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;Enhancer for YouTube™&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAKXklEQVR4nOydW0wc1xnHvx0wN5v7ZSGVKiutWqmqKnVp3ZcoT+1Dk0itUlWtKuWhb6W127okuElE2of2oS9prD6scRzbcRwbO3US2fElTpzYMYkNa+6w3LwGDAYDBmzAQIBl832zMxGc2cuA9zKX7yeNGHx28cP85syZc87/HAkYWyMBY2tYAJvDAtgcFsDmsAA2J1XvB8vLy3/pcDieCwQCT+CvDjzq8Ly2qanpJDCmxRHtA3jhXfjDjceOMB/pRzGqbty48X9gTIceAeoh/MVfSx8eVY2Nje8DYxoiCuByuZ7Fu/sUnQekLTDygz/B1Pan8FsOyB+8CM6uN2HLwrj4tW78zh6sEU4DY3giCoB3/xn88Qyd3/nh32D8u79bVy75v4RC37tQ6j0EqYtT4te9EKwRzgJjWKIJMI0/8ui87dlPwZ+WHfJzkn8RivpOYo1wBFK/vC8Wt2NjsQobixeAMRzRBAio582/vQHRkFbmobi3FpzdRyFlaUYsbsFjD9YIF4ExDDEVQCVleQ6Ke45BCR50LtC0urpa1dzcfAmYpBMXAVSoFqDagGoFqh0EGiVJqvR4PFeASRpxFUCF2gXUPqB2ArUXBBrwqMRHQx0wCSchAqjQmwK9MdCbA71BCNTjo2E3PhquAZMwEiqACvUdOL2Hocj3HjhWl8Xi6yjCLhQhdv8hE5akCKCSNn8XnJ0HobD/NIqwsq4MXx2/wDbCTuxQagYmbiRVAJW0hyNQ1vE65A+cA0fAv66MRMAfFdiP0AZMzDGEACrps7ehtPMAFAxin1FgVSz+HI8KbCy2AxMzDCWASsZMP5R27If8oUuhRHgVawU31gg3gXlkDCmASub9myhCDeQNX8bfAmLxf7Cx6MbG4iAwm8bQAqhkTXdDaXsN5I5cDVX8L0WEEWA2jCkEUMma7MTG4j7IGQ3ZVfAPRYQJYHRjKgFUtt5rhbL2fZA95hGL6F2yGg83NhYfABMVUwqgsm28EUVww7aJFrGI+purl5eX3W1tbQ+BCYupBVDJvlsv1whbJzVviDQmrdYIy8BosMS08NnSn0Dvzw6B78nXYL7ge2uLcvDYi8cYyvwHYDRYogZYTwBy73wm1wiZ9/vEQprA+DLWBgeAkbGgACoByMOOpDLsUMp4cEssHHE4HC/iOMMRsDkWFkABexLzb38ojzVQV7PAkDKD+TjYFOsLoECDTPkD53GsAUWYuyMW2zbcYhsBVGjYuaD/DJR6D+Io5KhYTOMLL9gp3GI7AVRoIkqh7315hlKIcEuPUiNYPtxiWwFUJP8SinBKnqG0ZXFSLPbiyOMeHHn8ACyK7QVQCYZb3lHCLdNicYdSI5wHi8ECCATDLSfA2f1WqHBLKwTjbpYJt7AAYUhZfgjFPW9DSe9xFGFWLG5WaoSPweSwAFGgWqCEROg5HjLcgiI8jyJcBpPCAuiEwi0l+FgopnDLysK6Mmwo0rh0JTYWr4LJYAE2CIVbnF2HoejmqVDhlgZJknZ7PJ4vwCSwAJtky8KEIgKFW5bE4uv4aPgLPhoawOCwAI9I2vwY9iG8AYW3zmhSTijBNXw87MS3hiYwKCxAjKBwi5xp6D9rqnALCxBj0ueGoJRSToMXUATjh1tYgDiRMTOghFs+1oRbsEb4L81gbmlp6YMkwwLEmYwHPiijcMvQp2DEcAsLkCAyp3vlTANNVxPBGuHffr/f3draegcSDAuQYLKmvPJ8xZxRbVcBivDPlZUVmso+DgmCBUgSwXBLDWSPaboK6BWimmoEbCPchzjDAiSZbeNNSrhFsw7GItYIrywuLrq9Xu8cxAkWwCBQTSCHW+5pugpoKLJ6YWGBRFiCGMP7BRiEWecO6P3pQfA9uVcMt9DyrK9lZmZSuOWPoGOB743ANYAhoXDLVSXc0isWTuCj4WXsVXwdYgALYGgo3PKJEm7xiYWjKMJLKMJheARYADMgh1s+kkVIn9X0GQ2jCH9HEd6GTcACmAgaW8gfPC+PNaTPDYvFt3D0cedGJ65yI9BEBBwSTG1/GrqePgW3d1TD0tbH1hY/jjXBOZfL9XvYACyACQk4UmDy8V+AF0UY+tGLsJxZ/HUZ1gJurLm/qfdvsQAmhrbxufftX0HXz0+sfXVMx6NC799gASyAPy1H3tJnDU/o/a7ufQMZY7OQ+621v34fdMICWISMmXWLYHSCTlgAC0Appsda/7f2n3RvvsECmBiafFpw64y86AXNTlahWUZ6/wYLYELk1U4GL8hzDkOsdlKxkSlmLICZkLuELyrrHWmu8SBlEDa6lgELYAoir3iGx0uNjY1vwiZgAQxNxDUPYzIszAIYlJyROvmOp0mkArR8CS12qbuhFwkWwGAket1jFsAgJGvlcxYgyUSYHp6QvQ9YgCQRKSACCdz9hAVIMJnTPXJWMFREDJKw/xELkCCCO6Dth7xhY4VEWYA4Y/SYOAsQJ/TsgoqdOElfKIIFiDHyUjEdeOEHzLFUDAsQI+TFojrfgMJ+7WJRdOEdDscuvPCGWyyKBXhE5OXivIegyPee5sIj1yVJ+rMHAYPCAmySaAtGYuPur9iqvwYGhwXYIMElY49Acd87miVjkQas7p8305KxLIBO5EWju49CSW+tpRaNZgGi8PWy8T3H8FyzUEczVvUvYFV/CUwKCxCGKBtH0JDdHitsHMECCETZOqZd2WfQMlvHsAAKdt08yvYC2H37ONsKwBtIBrGdALyF7HrsIwBvIh0S6wuAFz5v+BMoa98vJmgJ228jb2EBApA7fEWefhUiVEGtPZpbfwBsjiUFyB25Ks/CyZrqEoumIHjh9wEjYykBsu9eV0IVHWJRXEIVVsASAkQIVdBwnXrh54HRYGoBgqGKfZA9pplvQXd5dWpqqru+vn4GmLCYUoCsyU55+5Wc0ZDzLV6B4B1/D5iomEqArOluKG2vkRt5IUh4qMIKmEKAYKiiBt/nL4MRd94yM4YWIGOmXwlVXAo1t/5VHKFz4wjdTWA2jSEF0BOqMNLum2bGUAJQqIL66vMHzplq/10zYwgB0ubvgrPzIBT2n5aHaddCF16SJNqBuxmYmJNUAWgCBs3ACReqwMbdLmzc8U4VcSQpAlCogmbgFPreDRWqqMcLv9sMoQorkFABKFRBky2L+k7Kky8FaI2USqzq64BJGAkRgKZVO7uPQnGYUAU+4ys9Hs8VYBJOXAWgIEVxz7FwoYomrOqrzByqsAJxESAYqqiV73orhyqsQEwFCIYqTiqhCs3G15YLVViBaALQVcyjk5SlWfCnZYf8ELXkqUVPLXtq4QvQWqdVeMefBcZwRBOAWuTP0EkB9s5NfOc36wrp3Z3e4eU0jTZU0a3c8ZYNVViBiAJgL9xbeBFlAb7Rspf+Baa2PyWX0VamtDIG9eIJ0AzMKjuEKqxA1K3IXS5XA0rwY4iO7UIVVkBPI7CChl0jSHBbqeprgTEdUWsAlfLy8l/jhX4OZZA3JcTzOnyPP7HZXasZY6BbAMaa8NaxNocFsDksgM1hAWwOC2BzWACbwwLYHBbA5nwFAAD//z5RgQcAAAAGSURBVAMAmTHvgGfdJuQAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Global Speed: 视频速度控制&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAMnElEQVR4nNybC7RUZRXH94FLKikppAIaECkt1PCRZmIKKNWyMkRXmEgsllIBBljkwpZopGmS4FopoUTyUCTKFyWFSakhCEqkiA8ieakkAgnyUOAC0/83ex8ZLpfLzJ2Zy9W91n/duWdmzvn2/vb3//bjmworoWTMGurPx4QmwmeE44TWQiuhpXCk0DTeb1Tl65XCRmG9sE5YJbwhLBeWCsuEDcL2xGynlUgSK0JC4cbC8cIXhTOEDsKnhUPMlWyQ85xMFVQdSy7Sz+8SdghbzY3xojBfeE5YLGwpxiAFG0AjqtCfTwqdhK8I5wjHCgeZK5uJAW83n9HXhTeFt4S15jO8WXjPfNYR7vlx4VDhcHNPaSEcY+5BnzD3rIoY8664P/edLcwU/iG8nfiz85a8DJBxxRhYF+ES4TyhWQwIhbcJa4TnAwvNZ+e/MdAdMehMsvfMV31W6gE8Ew/DsCyfdubedZrweeEoc6M0iPtj2CeFh4W/8X/iz6xRkv0MplE8+HLhW+azwTVcbpPwL+HvwlPCy+azuiNVMrNbkYr4XjrTh8Xgc2V73DP1jMp4zs4q9+MeLLv25l54vvnSOywMhjHgjgeF+4TFyW5Py88AGbc6N+0vfN2ctJAt5msPKz9m7oKQUiZncCjYRjhR+KzQ1pwEmTG85mDbkxdyHpudMbzpHeHtUATyw5tejdeMoTLnmRiWJfhV4SLhLPOlZGHQvwq/FuYlfu99GyBm/ExhiPn6PiQGxUB+H3glR+mG8bCTzbngrHjdLAbW0IokWtttmMowDCQ4V5hlvtQ2QoJhDLwKo39buNTc8EwKXvW48CvhmcS9bU8D6AbN9edGoaf5LOJKuPVvzN1pHWsqhw9Q+EJzXjgmHl6ssvkKRkEJiPUpYXr83RDGYIxstxcL3zPnDiYEQ/xBGJb4NusDzrgCvxPOjpu/JNxprvjGmG1c93PmfPBNc7drZPVD8A4UwhD3Cy9ozFvDK/DQbsIPzb0T47CN9tCbK5OMz9w95ophoVvN18yGuDnewPr6rvAlcwKqq5kuVJg84oU5wm+FGeY8gMBjcNowcx3gsV4YgC0NyzGb1wm3s5dm3HLdhR8Ip9jerF3fBa+AL+4QpkmnjRHDoM8vzXeYizHA3ebrBELpFB9kr4UwIMT64ua1FbhsgXC1dJsXE0vgROR6L+vhzPhg1l0y7h4sAdz9w648wqyj45hQnm30L+bL5YyU0flnZQQcRwgn2EdPCOhaho5EqGytzStyPnBQ/M1NRj5KguI7c14j2/AAXAKFUwPw/35j6Lwl0a0bNrR6IOkOgbCzofP7GGBT/HNY7JuQxvtWKjnpJLMRIxSKdHBjHDhBr83xmryBwWzEAOvjYtO4uDPnWvHSXAFmf22/U6eaXXutwqdj7QAJcU0aMsNz/F2PAdbEB8jx09RyrZVSWALtlbzdcIPiTQWclyvmatLE6lioMqEbOh4V19bwD4zI+iDnZrHuimull4MVTZ+taHv0aMVpCtS6KI1oVGc7LTrh3ejYIq6twgBUbDAA+UCa679u5RJ44HDtvJeornKf0vWRI7XpnlAX/LDCXDd2PtZhNsttkPMGZagjYp98zUpYeKxWGujRx8jmAwYoyVaWPUQZeMuWViZB2WVRISIYahHXlmMAKq6klsT6beML/7YCa2u1looK3yluVCZ+vxK5Hj00xEOtxIIui+M1OpLZovMyDLDanCBw/zQCXGKeGdadHKLaSydVuO66y2zcOLNzzy1l/MD+nxqAUhq6Zgu2GIAyEeUmXp8SVR62jCVW1wIPNG3qXgA/ED+0a1cKfqCUtjYKJdQE0BGDZAMh0kaKm6x9skCWAu4x3w6UwA+tVM0aNEj1GxVwBg82O/poK0L+aa4TM09FGV2pXlc2CNLjA6wTEobmQRZzrK54YF/CFnmyJuzmm90juqs80bhxgTfJkvmcaJ4Q7LWPa8+hZ4P4EAYgB+DuaXpM4XGz1QdB6a5dnRvGjjXr2NG9JD+By+bE6y+YV4YI9bMent6FaJDqCXtk5+AByHGB1ReBB5qp2Nyzp3tDv375cgN6vRHrnwIuOsJ52WAvNQDr4wnz5UCJrHFco/ZfusywWKE0u0m520IVrxYt8v/38w3zvgBET4n/vLj+RFxzAwQPPB4XqaWfFteonGyx+iDbNLS5c50Yr7jC7Omn8/kW7j89dKGiTbeaiZ0ZPGe5BRFcZUl8sJu+wRMIkp4xrwofGNkpvlq61IOkiRO1cxcUpbOEXw33p5RPAPQfc87LSi6TQAzT4zUNjybRSqKRUPe7Ae69WjQ0frx6PGry3HRTocrD9IwdHSiAdIvrf7Yccv/AAOESj5i7TWuha7yFUVZZXUm6zh991F194EC1OV7IZ71XFXqL08L9FVZm3Z+I8MHcrnHVvYSO0LPmAUOvaJoQJk+1/bS1SyLbtTznz/fEqE8f1aln+NovXBjrA8Lq6Hd+x1yXtH3/geRygEU7iZYyFoMxT9S153VtonlnqKmVQ1jnK1aYTZliNmGCcrTlVqQQ54+PPiHNUjiMJTHZdtcFs1JdNCHfy6bIpGR9IyYgPaZPWFovwK3XKASZNMnsssvMhg8vhfKM8Y+2m/y0jrInTGjlP5xU0aE6A1APnBg3UlZix8Wxk9FWylrhFu2ujynMuPJKs6uuctffVZKQg9m/Iw5FtBF6mevC7O9V6tvLAEEQ95pHgvT5B4QXvBLXi/OCSo1rgXanoUPNevcWxYpjt261Egljg68WxuwrXMzW/1B8QnVHZvYVUMP64+OGdI3bRzJBv/BNq40wu7j3qFG+rY0ZI3pdZyUWJm1UeCys3zuuw2srqvtCtQYIS9E0ZeOF+K4JNl0pqIhXQFyA4ig6ebLH8cOGeWCTKc6RqpF0gpZGF/hH5rNPzD8m2UeJb5/ZRNTPrxZuMw8mLtKFmRnPpogNzrF85EiVGk891Wz2bEUYZS0yzRMu0Bg3ZHwXY4zkNKrF263JPnKaGtOpjDdOOXJGEWFuPOBdXe8YDzjC6odAfEzQkxnv+vxJ6Gwe3p+feCxTrdSYVCdeGvupeZhMLj0gyIVg6XY70AUTF1yb4zyzYmzaVrKtfZhVlVb7X01fzqeqwGGCKfFZTo+dnkOInBEsf4RYs8wSbosxcRhK/bfsrsURmOnJfsaXV0Uh4ykyhqBkxtHUbvriOxFlkTK3tQMjkPQ3NJZFGQ92HjKPYFcIXRMvhtYo+daVOCeIZWEx1v91sSuQPitBz67Buha62pz8eilYX4FFdt1D2Jx1yiukzMsA4UaQ3ti4xGmrS/2tbNXoeqvmFGYZhaKG8uMs2SEc5hoU4yF+eSjJc2kWVHDPeExATtDZvI7YXTeYG1njz81npMLKKxCvoigbGsnb6Xo9zby3SfGG3SDv7nbBHYeMd49ImFj3L8cDX8t40QFi7GNOQuUQ9nIIeUDiB7ramNcwOMYHH1yY+NaXt+RdW84RKqrE2JzbxRjjNZAWidcO8YAHrDyFVO5JhWdgKE+Ux2FIOj3vCsqobJEVKAUbINYW29+PzeMD9tx7dLFZ4sQEP3BctZTd5bS81T8iPZYioXoX8/0eApyR1GJLro0HpLkCCQZhJoREwWEsA4vgaYA5YVZa8cKanyj0y1GeA9zd4j21jbz4YbWQWhkAiYyLCGxEDAQmZjkcnXjREQ+BGIs5cMXskosMihCc9HxcPAuFiUZHJkUYumASrCrx44qfBNgBaDr05SR2xAo9Q4kjrTCBY4g9JnG+P060ozzelhr/+qTIE21FGwAJI5B+Eg9Qe6fbTEz+YjyDH1Jw/LaD7f+ZrGOKLxxqnhX/Q7YQHn1L4g28jgyv6EpKrZdArkT/gDoBuQJRIdkje/PXzDt4NCf56Q0VpZoCJviE3y1cYP4rMOTL5gEPyrPT4BW3lEL5GHvpJEpndGCoH3Lgh+3pF8KdetB74Sn8nIUs7VO25+8DqUL9TJgcAQ69vO+bZ6Ok5dT5B5vX9evHDyerkyikEJ2xTakSkl2vBE7X2O74nCCK5QKT44V0a4abt60Qki9+uMFP9OAV+hUY49mkxDFGyQ2QSsY9APLj53YoQWZGkvJIkBoEye+UMMBbcY2QmmXDGufXqBiPEveQpExH98pmACTcuK/5z1SI3Fi3RIosgeWpK8fSaRWfU4Mg+z0KGbcIdydlPLBVVgMgUaUhVockqSOmhy+oI6Rnk9gdWA54BC5OUsOSmZ9Yec8nlN0AqUStDm8gQEpdP1UufU0WR3AzNnECLbvUmQGQ8IbW5r0Gtrfj4y3OIXBAg6bG0nLPeq78HwAA///lZyELAAAABklEQVQDAJKeo9ksg1LhAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;SponsorBlock for YouTube - 跳过赞助商广告&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAMDElEQVR4nOxZeYxdVRn/zn33zXvz3ps3SzvT6dCWspQabLE0GJamign8AQSxCqgQsZgSgUhrrEsVVIJKkYQggRhDIhFUEmObFIiIfxRUDLQgWBrECWVmKEPX2efNvOXec8/nd9Z73rRN6l+VpGfmzrn3rN/y+5ZzJoCPeAngI15OM3Cqy2kGTnUJ/5fBuHnzfDg62ZvkwiVQyJVZxJeKfUOF4IKPd+LBQ0thZjoARjJJBKBAwcpt7ZDNhjg5Pg4cmcgGELAAIQgyOK/rCB44NByc0VfHbPbDoLPzqGhUD2WT1gPs0a0jJ0sTOyGx997bkVQql7IjYxcxkazEyellGNWXQsQ7ABGgUdcD860AI7RfoQDQkpMz1apIf3BmlphJAEol0rVsRPpFXdfrwEpFwJgDCEGizGhySsUpYvAgdHS8h4X820FrYU8yb+GrhZ/dM3xSDOC3t1wuhj74GkyOXQW1xnyMGpqIkJSVzRIhBnW2tiug+lUv6L3LAeqvJJqB7Uj3UxOpI+G6iyeAtB/GsWIU8nmATBCzvr6XWM+CJwuPP/b0CRlIfvjjrbBtxxY5CfMtmuggY3ZCjxxDh25Q+3jkpH3pSDXG0W/Wsu2W6XQFljIrtSOZqlYVk7Bk8XPtO1/4rF3dGTH/6f1fxSee2oJdhJD2Mkm7xUhZq92qXsg19Wv6Lmv6q9tNg5mDNIjsQT0JPYIIsk/6jfpB+06rkR0J0oRqyzAQ5SIIoiv+155rp39wz/eaNEAbseTKq0fh6NEu6OpUVBnhaoJAaxlTMbk2mCNBpy3U0rTawFTcc97R0wqasUYL3nhUVkWMVCrAOjum59/8xR62cWNDeaFk0+arcGysi3Ua4o2+nTDthj7OAbQKfCaN5IWHGdvmiG2yBfNte5E5JrRO0/mOFXIWfGCgPFWLrqWGbdqNRo11UK0BlMvNCzop+ASmDKSLW+vwJCghJtDJ2Me6b8waniLVlPVSqZicNvU2TJoENPbu/bxjAA8fXoP5nFmoWZpuopQspqpFzyp1tzDzrOSwWTseE0LZhfAMWaQQ9OB3jHYtw+RkooHBNfKb4YMP9kbPPn+Q2GIYhm4z8FSH2OwafbVaWDjpehoBh2WhDJyRU1DvieLAOAJ0kp8rNIcGTDWrfhoRQGsrlNZdc07Iq40VWKsxyOWbpIbHSMJbfO0a7Xn+9vIc6aMjipm5si58YR1E+/ZB4629yhuxlhYQUZLCxckLnWZSDeEc5qgiQYjxCagNfbAyxKHBZSh9PWELjQEb23QEpwzpBUq3fAWyF6yA6o5nYPa++53UFSFCNDGeoeBX2vJdcsshTD3yKEz96tcUpKrAMoHSjuDimD0UXEUqfQHgGbJhNkHgldmzA8xkekStTj6Z/LLBuVKz+rb+Wrh+WQsZUKgUPncdzH/5RWCfWgucLItzTkhMKHDLh8bLNqkpk3a0b7oL+l54FrLLl5HfiKBO6URCKYaa554EYvnQfLlWbNaz68oxsq5XJ4C1lc4IcNGibk65lpWeQBtoaAI93DCiGJCL0AIy1NvCikXofuQh6Pzlo3octwwYZmSukzidQnjmEuh7Zjt0/+ReNbY+WwUeRTQ3IMIl0fSoveV8rt6PqVU/g8bk5LIg3r37XOjp0QSjJloSy1FHTvVtuJYEcQURhLmlQHaxZO+bkL/5S0QIhzjWEpVEpspPS/uXb4Tz9r4GbVd8Bhq0bqNRJaiQNizhVotqX6HeVU1MSqGwQjtU3nqrFCTVeiIIj5pwTTS30k4s4ZhCgyfHMXb9sEwGen90Nyz+y3PA+3o1HDxtzbWlTHsHLHnicTj76ScBW7MQRXXgsZaurLnUSGygKDXLhaOnNjUK2SWLKRfqaM/xqSlNvCFSOAhortU3t/AQTT7ZJ0wY7eTPPRfO/8dfofP7mxXjPgOuNvmQbClf/mlY1f9vmLf+Jm1LUaxRkBg0GBvkwmhBaLfMa42eMAmzZU7GBDI3l8Raj2ISMGvU6t22G7cpCTheUdIlbSy843YorV2r1ghONF62kQcMKHk86+cPQG7VKhi645vOA5nYmQrNxqggD42RMYJQEmu8G3yLxDdEjX8llSQxtTARGdIxUmtGohL3UsIBEUXhBvY9/yc1Xnjj/YzUjaf+KXree+lF4+mk8wCDjJQuQY2Ca28o5RgKnlTlAMaFCyRqcbQaMBFTaM3Idk5t3BDULEwBrYUinT8YvPv6bhhbvwHCyizwDRscwx6elCCL5MVk/eb2bTD99TsBawiUPZMwHU5duuIXTuJpKebrYTw2WsXWgsm9JdGJJhYhZQTBpAP6O6Z+Kd0oivQeNDeTy0GZjo5j5E36v/UdgN9v15ouU94i15YMmPFyr1yhFYq07/CBYdh32+2AL+2iqE0JActAHQSkSSTzoIlNDIQLu0cplajn1MGEjFapxwUzI32HfW04sk+6PTpcQky2I9tLC3rlsQ9e3fZH4HdupPNuonJ3uZ2EZ0MaZaMBiRxPbe29vSBD2+6HHgK8e6tav0Dj6pQR1JC7FEIrQNuITVeVt5M2BnmoDQ7HYcvFFx+eeOq3kOlbpHCmIYNeDepdilAYA27EETCKroyIL/b1wf7BARi/axOIl19TGwUSZlb9NKder0EwPQ0tlANlu7rgnVdfgQliFP7zPmEfSRgZqDLy7Yp4q3FLcMoM2FRcaSCBQkc5DsllDfNAw8BGYetp7NERm6BEEMqE0EbJ38yCbhjcSrnQ/b9QfaHskw7B5kIq5aYIS7cVpe5uGBsfhUO3E1x+s03qHOg+A2oyvxexHgpaw1rimKbYNjs1CS6zyV8YDIbV94dGWVunin4+TNBGXAGpazVJVmXkCIy82w940y2A/UPuYBwZb4MOujSnMgOTRw7C/v53AG/dADg6A3kaHxNcZkUCTdmmo1c0Gy2mTGjFShhRRirYkbB11YqBmTf2qJxGaFdiDth+5EwzTFnXbvuGPqyTO5NSjxTB3n2Fd35mtQTGr7yGjlAEERqfk3CR65D7tCcGdziaQ6yFiz7rsdQVKYg2oHPNJQNhy/KV/YKwiZSRynsfHyrCJ960KdXyNIeXfkVvJByD9jCiW0lWlVjdayUktSokjlK7BvhnZMcEOCekz8peA60Rslbg05X+YGF3+7tBV9ehmM7ENmgkJhPVwQa0casUQ6jEUtCCApo1pLRG4Jd5urAR3NiSNM1I5Ve8Kc4oljG1Oce89wNoRGNgTDMhJh+W6SxP8r6etwN2441JuLBnV5TM6nwf7f0NqsOGIl5YbwRmicQYeXqXkxib0ZuKlBBMMY7MusYUCg6a3lnbrOIIBqslVTHl4QqL+16/7OGHa+piq7jqwudk0ivixEhbhm0vJrglbbTG9DLKXsM4mNnbFkMEgmd89gxsHIKBnyVWvTP0MXWMHUrhyHnl1av/LPsVA/OuvnJ7WOyiy+EJJTwV0HwpGEI1xMytguen00N9GkEt8ZY5fXOX4h4dqkWKd5ijGURPFPothhqd59ugfOEnfucxcPV0z6033V2T4UFeqjItAYH+FSCmRmwl0ozWVM/IUigwe0VllgX0oGWghnPOxYBNHDEHHqY8WPvqC59atnHjiGNAlhWPPfZA90WX/KGaTNHpaAI4hX4RayNOVdlsYCgMXoS5EIA04Tveqc3CrFnc4HkYv52BhZJ0AxxmifhZ6F7+sf4zr1+3qZk5r/zz+us3TOx6fUM8Nn0xr1VAHstD8t4EHhqcUY/mm3nbYroaIvgkMntj10Qum1PbHhPYDIATtaf810EBsvM73smd0bvjzPXr7yPpN07IgC27rrvufF6pXiYqtdXVwYHVZBdL6c5+QULuVmCkpBIGJXKPMya5yqmNY/rJuIUzhgHurmqkMGQRFEEikIGtRfUH1CPNMxNSqMvnJ2jxA61nL92TbS2+EXZ3vHLZjh2vHY/OEzIwt7x9ww2lkQ9HFgXZYEkmy7rDYrF3dOffF5aWL2+j/7acNTt8IIRsRuR6FxT57EwXRhGj4NhC8GZBPhcFpVbBMBiPDo9WKaplwraiaFt5/v6J3W9MF88750ht/4FDXZd+coyueD6oicbwFTt3jp0MXSfNwP9rOf1v1lNdTjNwqstHnoH/AgAA//8wQVEpAAAABklEQVQDAGIxM/01gzDQAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Video Speed Controller&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAMr0lEQVR4nKxaWYwcxRmuqj5mdnY93rW9h+1dY6OEwDpByAQJEUJCnhCWMIoEwgQl8BTJIAsQWBwPLEJIgRcixAtCWEY2lhUwiEsoFvYDWLxBBALsjcGCtb0+Zu9jru6uyvdXV830zM7MzpqU1NvHdP/1/fdff63LEkMxJujE9aUe/Kv+/kwqilbjepX0vE7JeYcbRSkmpc+E8OmliPOUVEqwBkOChqdUyeM8jHCN78qKc8mFCPBdSPdCiPjsOIGKolIeh5vJFMpjYwu/ZSywtEaA7xkCpcnGw03+SD+c7uvr/4axv3DO/4D7zeCkN3KcLryS8aR0HM4Zp8NxiFDMpf7DWbOhzG8eXeM7Iyz8UQwCYUpKFuI2jCLJlSqnwAgrFkuZvr7F7zjPgfYJpdThby9e/BCUoiRtbsHjkCeuu+4mNj5+uNtxBgJ8AaKc3pY0USxNrR1V/VixFQ5l+V16XxGBML8LPCF2Xc5pXj5TLv976969f+M7dlysMDBiwP93+/Yr3dHRL9nc3OoC5wF9oGKt1E7KzTxJibeQfi161Zwv85uqfc+as6I5uoLAVdu2/bjpyJFtgDENGXMLUo6uW7c/4zj3zcHmeKzt6jBqZ1HEVBjqM2wW86jqZPXnRszZ64oMjNztIQSDb0DkxrKlZHUjyESRl1fqr8OTk/sxk6Mpndyw4VdwzK/KjKVUzHVVymQ+8/P6VnR1MbF6tRLZLBMdHUpkMoynUop74JcOTMh9XwOxzKhyuSpmuibGA8gIgqB7XDNJ97iWpRJT+TyX09PaL2ieJBPAFnUK4ZSVOn7VhQu/J8vQrEKqf0w7TqosZcitY5NzkbRBIHvPPVH29ttD/+qrldvXp5xsVolUijUZ9XayrH1JmgcMRIUCV4UCC06d4pOvvurNf/ihI1atSmpVFGOGrju1ceMgP3furAV7fe2UPJam56mNr71Wzm7fHjYEZKVTazatASdNymhKkMnggEY1IX9wUHbeemt06cUXvdxzz/maCcITBxWZ4bwrDIJhvHpWGKJDFGmssxJhOTfH1u7eHQJ8IMtlrtUcRVyDtgcBoIN8pN3DfkNHkpY94F80l8RcfXv2BD0PPBDKmZmKH5JofQgBOeRqDTUWoBqIrPRIQrBLp7eXdd93X6jZwceCbNw6M0lcCNb2iKLGz5PMJIRBcxnqvPfJJwNn/XpFJma1R2oCxV9qEur66z0A6okSKlbFIktv3RqRKrVULHArdcdRTUE1Git9P/5G+4a3fr3M3HCDlPl8RWgU/cDKoGbgi9OnM7jpkLEdaw1QZCCHjTHLJHhVOnmSLxw75hAoqLo5APNdMDnJ5z76yNXvhyG7nOFu2KAS0ShOroz1awbSrttBtUyNG4IZf8sWaa+T52hxkZ/ZuTO9ePy4A1W3ZoImQJgd373bn9q714OzLvt+QwbWratmNsMAdLHuX9CTCBwnjfrDr2EA6vM2bowf1WVZxH2mEK/H7r47vfjpp8szQXVTOs3OP/igP/3mm55+v11NGKE5yD32mtAYXawa7u3tEIj/cGoUjPajOHwyt7e3cd6HLWsm4FRjd92VWjh6tDUTZK9U+HV0sPO7dvnT+/drTbAVmBMl0Ao58GAiZqerVFYgXFHZ4KrkhBQFenrij+vrHJsjiAkp+Zl7703NHzvmtmTCBAKOzD0OTcwcOOCydszJzK3zgw0kLNYArCYF088I1N+eU3k/Lh1I5c6qVcRT86REmkDZQEyc3bkzRY6tmUiUDkuYQBSh8uPcrl0prYk2fEjjgvZ0BIqjjw6jwOpLYsBzHI9qfGWeKwIGjnlnZ40UmjIBbdE35NjzR4+6wvdrQVHtk4xkoCfInKCJqX372vIJ0jav5h0qQJVHviVEWqD+8QhipbYnLvEBFWusnWEKOGLiLJnTkSPanCo2buqpiiBMEiRzuvDQQ/7U66/H0cm+12BQJLMaMEMv/2DeaeEK4Vm1VOwbgHRV2e6wTOBMPjH77rsu831T2jeQAz2jueCc5x9+2J985ZWYCVtO1A+qAuqjIU0bRR0ilDLF64iTGYiVMGCZwESk6rP335+ago3rp8Uip8TI602RNE3mBCYuPP64n3vpJb+eCRtAOBV7DRiA6fv6pyWEPY9d1qCJqarEZBQydSlOlSyKwYa+ZDQhurvZpaef9ohRFHBlFi/+q2BJmLy6mOWVhZtyXcrCS0gnQtZlMUHRBo564dFH/YVPPnGUNZkW5oSFEsuNjHj0fd8TT+goQCxo1yWfaaABPPRFUxA/ZxAoMiccc4cOOdqRW0Uz69iIfLkXXvCKJ06ISrlt8DSKKLqkgHjcmij0/xiYnFZWsF3V+9RTgTZJpVq/T6EXQIfeeKOUvuYaSSFamNBJPsAbCACmqgTW9V4jgpc9YH5UKyEZqqFDh0rrHnkkTgrWjBqBJw3hGNy7t5S9445Ql95JM24QhWggG3MRNyZqh7rMsleDR91O2faKd94pdd58cxQtLHBa+DcMpwnJD+7bV8ru2BHqlV+9DzYx6UipQKAwqvMOHncNVuoHBH5xkYk1a9Sm994rZm68kUyU6zqGYl09AxY8ng8eOKAlT+BFgwhouxmV+zgbU8MrqLUVo2bT6mBtDwCUCwvMGRhQWz7+uJjZti2idTT9xJsxC1DkI4MHD5ayt93WFHyzYeJo2V3yC0mGejRIQDqFtwFeoW/kDQ2pze+/X/SvvFJqMLY5RQ5IJmE1QOCxZEVsV5veekubGVsGPJm0MomvpoMnRJGiUKm2KRKvickR2wFP3QuXwH/wQRV8EgwFBOuAVfDMgtc2v5zkjZ8kUZockXdRkkrDkZ6Gx47IyRljVlVz8JC8u2lTDB5L0JZmYKNTQvJkZq1KFlq46H4/mE4woDuHQYyrCHtJaMD6ACaKZmcrNV7NoHcseEh+S7vgSfKoUpOSb7feiubndZnP4rJfMwXmSqFSeer5FGpQGh8IczlupVAzjNl4CfCtbJibpEalxaa3366Cb8dhbSMBnY1kNteS5RxqYQtkoflKU0v/5TED58/zJJEKTYRKb/PmGrNpZcNEi1qDQwT+ppuilUYbGsH4eCWYkRtTsYhzfq3rzrukBiQEWiBwmehMBz/9tCQ/0F8XofIKxPllzcZmc5yH9u8vpoeH5YrBG4mXv/+eJ7ty2i+Umls/Pl50lRDzIgzz4KpTJiYvnjwZF4I2gpjiyofT0i1WUMuDwfvoZDOHwKPXuVLJUyim70qjo0KX1PGaWDkxrklafgkeBNPgbt6oRXfAaFFf/PprIdHE0lnURoBEQ7YS51siMFog8Cst0eNWpCqPjvLyqVOCMBkcylDK6Sl+ncst4HyJHtrtHXo5+OEHPnv4MKGMOw1mV6YGWLujXfC1HWr9aPbgQZeCRpKGTmhRdJ6urRhPQ7nXFmzYJC0galx6/nkvg6iRQoKy31Ymop2bpIM3yhfJCnKZ34XtTpu3SWOLn3/u6EV/3U6NzldCnKowgLXlf2BCd3JbMpIWYHPRpUv8x+3b02t37Qo6b7lF+kNDEm0+Kw31M4ruRoP2IFg4NcXDM2dE/rPPxMTLL3u6ZjL2rycFm9hiYmgHfWeZYSf7+/+EPsvRolKSMyYSYon3sRA6ORbfztq1yunpUc6aNRQa460mrKL03hnuqRVD5qedlVZY1mnNXhl1LfQZSQ3tck6ltpyd1Ukzmp7m4cQEl1NTLAITVAnQnDxRyarY/klvM1EUDQ9PTMSxHl1ef9vAwJfQwtYC2gI1TJjdw8oOpenfKGuv9aZh7+3Oox3JWqZ+cZLcnaTij842YNTSD7s4d4tR9O5VudyfSRuu2aosfxOGL2eVehUfh7SitflAEzCbE1qiJv3zVmvcZBOr1bNGjNut26UbIhGHbEugE3Z3/5Plcuwtoqo3i/VJ9fx4551fuMePb1mgdl9sTrXbBsZ/kpvfGhtbfieyBWRW169I/q+GvRApDh2Bqcxjj53o37Pnd5WN7io17ZPZ7/r7/4GI8He0U6EGHvdL49+Z2RmJj+q/HzCzt6xMN7jlGiKxMhammUBBRNusPXSIiPMSzaMQUDlMewJL04euGRt7nz37bMBHRkLD/NLxbW/vL1Bm/waEKe0OQHW9yNi9pCUQ7sYkqwG3C79hx5OnwCh3DDFelWo9cD0Mw7SeZSiJ0ZbiBdCFx/IF0MR2JJuhLItnE5D5RbxHhdDpKJX68tqxsWlDuiKkmnlGRkbEMyMjNf/O0mh8MzzsF2dmsl4UYQOXdYLRDjCQgdOldbNJKacMxiofQJNeXLZHYL6AXaGiKJcLuF6c8/08Vn+zhamp/K2Mtewm0JbSXWTaiUbE/wAAAP//8BvERwAAAAZJREFUAwAiFPXn8NNlVAAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;过滤广告 為 Youtube™&lt;/p&gt;
&lt;h2 id=&quot;语言翻译类&quot;&gt;语言翻译类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#语言翻译类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADpElEQVR4nNSaT0hUURTGzxN3JbYTCmyiTZumXBgUBhloiwJTWqkjuXMmyCCjkYQSDI0MpMVMu0jNZRnkQgUziFq0SJ0WBlmDYOROsdbT+e7MldGmN+/PuS/nB3fevDczcL+555x7znmvnHJkMpkDfOjmcS439iILPEYsy3qmL1h44cmH+PCGR4hKgzSPehaS1gK+U+lMXpPmUVPGk79KwpPf3PpNQ4kxOny6hcIXOtR7A4R43LBYwCd+c5KEmJicoaHkOK2ure+4Xn2oiuLRCLVebiBB5iEgQwK8+7jI//Q4H5dsv3fx/BkajHdR9cEqksC3AG0uybGXrn7X2tRA8WsR30J8CdAThwgvSJiVJwEwl1jfo7/s3CsQkhi4SXW1J8gtrgSs/lin2J3honbuFS9m5UgATCQ59sKXubghHmvnEXH03aICEBZ7HzwJZOL5OPUPWwGYPGz9f5IY6LEVUWb344lXs+QG2K5UfNdMzb23/dxWgFMqK/bR66cPaWlmVA2n9uuEza1ftp+LCMDuWlcb3j6HE+afm6ScBCg02cqK/RQEIitQyFcGb3epuG4aEQHY2LIb3KIaZ6/EWNQMJ21R5RvSjp2PiAkBrEL+SqSWV9Q5Yjkce2JyVuVO2M0lEVmBf4FcKdY3rIqaulNhtRoqXYhlRUmsjtgK2AEh4cYONXmYFcIuwOQhAgK9YnQFdgOTWl37ueMaUgY/qxCoALA7BYdP+PGLwARgr3j++G52FXITRoLYO5QkPxj3Adg7nDYaaVbpOMIs/AHXJTJcUQHHjx1VR4RQoCeeWv5Klzpv7SiEpNJzEQE6mdMCEPNVesFtM5iI26zWDSICkMzpyQPk70EVQsaSuam5D4FUcUaSOUSZ1JcVCgJbAU7bHPnJHCqotuv9Yi2X1qZG289ta2JUQ2gXuu26SYEohuLIDkdtFfybbd392+HRNPApFPNIM4rhqrFlKiXWICdK3O9xVY56ai3CrCR7/thHopGWouZSCM/NXZgVRPjdpKLtzaqdqFNst/hur6eWv3HUuefarGAmcFK/3QuxGxxu/WPj8zRJIJZOI31APoTkrRiSRb5oPYCwh3bK0vSoyo+CwEhBAyEoXlQsN9hSAUYrMpiV7pWaEgIB82QYxHfdUhFmAQLeUgCo+2C8y8I/nKQIDhmxcg954GZ3iEqLtGVZR8r4ZYNP6in77EGpkKbsnLNOrJ76YDX8tpOyj7TsVeZ59POowZxx4Q8AAAD//56JTycAAAAGSURBVAMAWJzDR0S9XQkAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;DeepL：人工智能翻译器和写作助手&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAIAklEQVR4nNRaW2xcxRn+zmXX67V317nYru3g1Nht40KdRrnHdiKcW6mUSrRSE/FQWVGpWvHQh0o8NFJFUSRUqU9plSKkIkQrovJSLoIHbgokIYSEkADB8QYcYhzsdXxZr+31Xs45wz9n9+zl7Jyz68BGyieNdvbMzJnvm/nn//8dW8ZdDhl3OVSrwhiTDv8rOjiflI9KstoKlu/E7J+s9EXWM6uptWYxcPzRpgVUGbkdGPznzOBC2vuMST5LxKkUwqnP2Ex8H+4AcgIWNfWoqANzGezWpsu1f8QdQE6AtfIcQhPB8qD66ncOPv5RA6qMnABO2iq5Z6gMzKHjpF5fdTNy9ELMoe6myt4k+YKPosqQRSQqWflK+twJM8qbEJw9TNEDex+RkoJnt9KhvagiVLjPL3zIKhzDnzW1Nrzw4cUwGkK1qPGpUGjJJEnicSffL1tngtWw9RvXNPanjo72E9azkh1YDnlWgZLpRA1GIgkkU+lsm2QKuJ0iy3KL16s8Hw5/8XCJADgRr4B8OR1Xp+oRjcawlEiWiGZsuQ4aIBF/s+qqcEYHQg1+hr3dBnruMdAcYLQq5CpjEi6NyXj9iozZRUk49lo0gF1aFPOxBdTUeGglFXwbeDyeNSgR4EKcY1ungcEdOrxKsdKWBkZFx8A6HU+dVPHRqFyyU7NJPyILKpE3EJuLIRQKEImyUztzKti1fDLnMoCTf6Rfg7W+EVr1cCRjfT9spt0IMszFgdEZyTZRvs7NqCU4B02XsbCwiGCwHory7XaiSIATuNnwlefUdAN47qyCd8NKTrAEBX1dOj4mM5pbkhzPQ3iWzMiIwtAZDFK2uLgIv9+fE3E7Z4FDeIgL04o9ZPOW2fzvvIp3CshbfU9dU0rI2/nMpsiM5lWkNYNEUDEY4vE4NE2DEyoR5ZoLcaynA8sxl5Dw5pBN7zI91NXpeqTTBnQSkJmLIZFIuIooB1cT4pNzb8MxMinR1hc0EJ49nBKOO/+ljH+8pZZEcW5GO/UoCciYkZQV8fjTz0NSPHjid4dQDvZdEQYy14BWgal6FHEKkvFGCh3kjBkVcjF0jYTpjkSdUPYQT5DHWbOCobOJkf+miYw8p2dO572I3wsc2pIh4BQPOE6cmUJd8gJk1aADLJmxBKaL4Dtxgp4r9Ey2mSHDX397UPg+uaCXsFz+KtMl6KMg9mOjaBP4gebl5LBi5jgWhiMSit5bUNX8XSZdmacUckYA/5R5nb+D8Z0xisjn6oJdKbsDPMLu6dZBARS/3qQhrat4+6pcdOB3dBl4aENm9WNLdAauS0LyHIZ3NQ488DO0r6Zdq1UpoJH4rHopsx34/8lzCN+M4Bd9m7Gxu9OVX9lsNEru8d+nVfzhAc1c5d9s1/Dg/TyQSaYAblotofyI595XkdIlFw/FyBsFaMwsUjQ7J18Yz+bjSwiPTZg784P2lqJxrgLcjsy567LZ9XCfBh/tRCN5psZA8Yg0bcB/Kcid+0J2XAyLxDB5o6WzJ3HzVgQb7+vE/q09PNM0285cHqJzZuAn97ZT/JHNutXmKkCEQtHvj8gYGvdg330Gfkqx4XshfvQYJhckfPKVhDeGVETmbOMF5DlmkrXYtXYdxm7dwqXhEfR0taOtcSW+nprFpWs3TMK9PT8yx6TTaaiq6ihCFZF1Ao+2L1xQzOLItAx5qzaebMb932/Hpzeu49XTF/Hw/j68cuoDs++27i6spITPGstFUAYqFFHR1WLZ2CDo60aeIzwbwsZ1nVgVCGAqFsPTL72O6dgiGlcE0b+hu2Q8j9ZG1ocXvtM1kJUNaALyqIA8x0zCh+mlGuzduoEaJSSSmrnCv9q1lZyFXDKegwc6S0SJgLJwUSRadTfy1oPPJuvwwafXzNzIJGjoOHsl7BqF7SLKBjK39EHUZJ/ciTzHpQkfhkcnyNuo2LtlPcUalQ7xl3jtvYs5USKIBVQI5kLcvupMNLDga1JugOShwNa7BT2da3FwoA9eOqyXP7+BV898aKbc5SBXStZpI+zEAfdVt39tu7cXqxsCZoLXsnoFDu7eQTvhwScjo3j59IWi1RbNtbxs1PYiEfHlkOfDby41ZdLrbIrN48HB3dvp5kHFleujePHUeeFcJQL0dHoCFRAWXj7BgThz7mO9Zibpw3hMQYpCuZVitzWtwqGBXngpgDWFgkU8HAXIiD9mJ+qmnFVIHBCdl+K2oSkyIfqpqRss17ameRV+/9A+9K5f50i+SMBrf279Tzo6+YiWSkwwQ4OoGAWlpF3PlqL+abOwbDH0TMl9z34OT9cRQanE89TX+lzJczj/8vgO8Nhf3jp6/uP5I0ISLP+5dbMfB/Y0oa7WAx+/P1WKfYvomrGjo8PkXtW/Usbic8ck8vG8yKonU5Rsydb7twVxYHcjuU+Zkjal6OLX0XxFqUQ18NTffzl5T6s6JdGKmkXOfmbrfdvq8ODASnhrFNR4FWQyiMrJV10Ax9o1/mP89sEsyBaq92+qxf7+IGjR6RJAMs3G/Flpu3p3I89RdQHpaOp4AXX+kxe9RH7frhCZjWL+pFQ9SpY8lkWeo+oCnnxyz3RbizJlumRyk72bifxOvvKSeSuhqLTykjN5kStPJlPjuFMCONqa1WPctPs4+f6ASV4l4hZ5bvdO5EW4MRY9YtVv/457GWALxvHeTZ4nBrbX0pfM7QXdy5npA7epQvdoR2FbMpmc+DoSP/Lz/TuezbXjLsdd/98q3wAAAP//MNYg6AAAAAZJREFUAwBJAoZinZ+XDgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;Google 翻译&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAANYUlEQVR4nJxaa4xdVRVe69xz2zsz9N0mWgK9DdFp8QdF24ZfpipR8IHlnxCkaYgxRGMhkYBAQovBFMSABDAkIvVBYqLAEDUWE6GQkBhKpP6wnZqGuW1hIlI605nemfs4Zy/X3muvvfe5M1Vxw+157bP2enzrtc/k8B/G3p0TK4tavqsg3FL2oAmE9geQQZNKnoAIRORno/3xpUF75P/R3gGy0/w8ueMHxUviyTVCY6CV8auQUYufHak3+Jf1X937642tC/GIi92862sTzbKNz/Q7+Y6yn4MpawCWL+bcLgbCoZ47XkC5ZQEtY+7BINNBWAAVUt6zJyRvuWsDmFkBC8iHS1o6TD9vLOnvW0yQBQLcufPknt58trfbXrKCihzB1MGYzCqWWcmourqoLyFF8Vp5dqZQkeTVgTnJbE/RMm/kVyshy3tQH+lPLxkq9j00tvHRCwrw3S9P3Ndt53uLTgNMvw7EzANlShHDdPJvDhwtnzSo5cicvO/41/nRSNFifrrhq4y1BozVrKCs3oe80cHGRcXeh3+/cd8CAe64bmJPe6r2SNFtIBVLmUDOD2tuCnoYMP0BhgKTaJ9lmRyFrp+qECKVVgCHkR6KACTWUkFVJoddw7f6hHW2xPA8Di3r3v7w7z72aBDgrp0TzfYsvtWZGVpJRUOYR9a8QAYryiZSgQLCyfEEXg57ZhRdDB9hyDKLFU9Z3JzumZgyqsoJWiKxJbA+z1boTI8spyv3j21sWS6h0zP3zc/WV5giZ9jUXBgQ6iI9OVwYMCT8kdzjE+POVQjRVoleneGum58chSOz4L49ujWJwpvkz8Eq1GRoenXotOsr5zvFM05lt+081uyebbzdnR1CLBus0jprAFHhqCYgSp1PsU1ifh8qI1QcTpz2U5cIWJH7ug55pHmto8Y0hynA1AqG3bpgWTpQv2gOPrIGV+XQgR3duYyjTY1nZA6DygOJ06Gnq7iFNIoogwud12BV6DAHvXtgAp9EUGFB34trujzD/2UcFWtQdGpwdn5+V96dq11BZeZoZQGjMVJY3Ih2ElYwEJW7Gv2CvlxGAwya1rAbrx1AnZUJK6LDIgpyidB4nsTZiyKDoo9bcjbKFps8rWQ0EMct8Y9vq8G3HmnA8DKEuVmC08dNOPIPTx039MGkQdBwpArAAD/Ndt7PfaRSZYXg5GGiqQ08bJ3cFJHp9AI2a1O/R82cCi4LRGXgHAgzDWBomMDu+5eiZd4OexzdWnPnV34mKu3MpIHjb5Zw5JWSj4UTsBJME6Db07XrES/dlNMaPl4ymjm6a9dnMLRMmLfnVkFP3D7PtClAjyMjiVOrINjEW64an+jPjTQzGmLT5hqiw3j6b8vhww4rzOsv9uCtVwpiYZAZZYHrsImtObo1B1XIf6dTwEO3zFVv2rhoenzsQj7SnshZqKZqHEOe0phMlXcfv63tjpeM1txv7cUZXDpaW7CwtdLo1iG33OnjpZv7/wwrrEtiSbJUKIpVzMbcFMIu6b8hlJFKENR1ipk5M1nCX18O6qBhNvvothw+yRoe3VZ35k/HhZi3tE6PC72zk0DtWQP8wzPvGvjhwRVhnlSxEihIYxLZcMpZg6NAbpRp5tkmKqlWCNMKTUd7xrhg4KKLpzp3HligPh0/3Merb2rAzluHFmV4nOHAc9zx9HjBzHpFRVZDTqkMpDTl2+SJHhlko1iu+pcawdfKvigbROrcbGldxLukJBkbKRhKeOfTyxdo3zr36y924U+/6rIvlNYLxa2VIagmuhiaYSB32KgcoqNn0WVsyl2EcsE5+oBHjtKudiEgDQv5+M8Qwbt+tqLimJbxn947a7XtizNwSc2az2tZIq00OgihMLJ0zYDevLK8lZQ/EsatBbT+EDDFMEQ+k6akDIqkssia9TX4zo+XV5gf+0kbxp6c8yuLWsCXARJGfT1tdShqpah2SutGVaZWM6HSCKhh6rlIon2HY1B6I9IzqNrYw8w+//xNQxY2bs4cO+Fje2bg2OF+bHRQNehTttO2Po7dAZIeABb0Oh46vrDwZLQoNJA7PtGE6i91pMEwSgP4vXRTjDDPPjjLzHeVt0QBsfCjKI878S4RnBIoWAGqFgjlSij+rA/YU1s/q2YFJMY/x9AnDZLzsbj6+My7BQjG0dc7lcrJm1hh6RTFEDIBZVHIQaMbVHtpxSrlvDh4RoENCrnAw5ZoIKYNL8dQoEntPjACZEQ7lR7AVaeS/5U6QsCzDeJIpNcpTf8OuucUuZR/c7+Ytzj5Gt0A4IIoCnseXQUnj/dg/HAPFS6p7jQRxgiPkSFfB3nfQI1+qjvvubhAMRTUStZHxZsjanLSIk4dNBJ1y8/NGNa8xPdN25a43xdukinWcXWs44h0zENCHV0DDPqKEtRGvvfVyKNhhtR4lTzgeQ95x0uOdh/JiA8406DdAUjrDvHWZx88R994YNWi1dfwsixRFMX1KjDwPbF31DUfzXHz9iU4siynS0brOMKw3LCp7mauXZ8DDGR/rZ8l1/pujSjALQ9eDhplUApuL+1rL87imy+f50WW8gI1tsBSuHx7QxerLuUdzpBwbWls2taAzfzOZj5uYIbVmoOMLjbOTBZiEoqNjiPu+3Srdguh4HAy0yThTqJHe4bg6BvzjsZrY+fdgw2bluDtj63jijQPAsj2B+LlzOynPjsEn/7qRZAw/KHGqfEePHXPB74WUhw5S6r2HSzTWsgHbqo09OALO41WKA6IrfEuvT9ZoApgH9rzbz6w1mn7QsP6TQq955+YgpPjfUeLi0WYnzVcN5nYeqY5WRwk5hV1YsnE3pE99z4bQBIiYgsI4WEYVttfv3P1Ao1bho++0eEkN8+/DjPbhXsPrA9CHuV71rqIuncUW08TNrq86kTtnHYleLhaSPYujLDsahxMeoKksJLii9LdgzRTb95e1bpl+uAvp+HYmx1onyt99sawGwcJ4bhPFjfBACuNvQomIV6KT/e/5AGbQUN60ChuMCylGCJCSAE1mKh5vM8Z+al73rMCBMj5WCLxG6AiOGlm5eWyDEL6xJD0IYY33cGWOsjBKTc+IWj4G8B9wqSGdu9AA3W7HRYe39/1jmt8UshJ5DOp0uPA0FA5yLjyIFNT++KtoqKY462Sc7EGuN1EI6UfDq7hXwzFY7xONd+HH317kjutUrdOHOSElv/oQZUKNbGCQkTWCMISYbpKKMWl9ACbt3gbouCLUgqj0JEFwslqEtoB/EZVMKmMP/5iCv71bm9gT4MwbgYL7XXr65xHhsOM9kwB0l+ochKWF2QKZcj4qkUs0GL6Tb4g46RCXFhOQSziY32MczNlmLT24voAun0hIQnRnVrGb/3BR8Nza7XWeEex6vGdkfY5FCuqYHXyivVCTOS2F2DWqeYjkfgChl0yFN1Uum+pOAAOvzyLW69e5m5+8eZV0ORsfeiFaS74JPJY7kc45n9i+whu/dyyiubt2LfrlGKcvGEhtJ1uhtFdzWrYkl1zxksfc2OKFn8Fadr2rhbCqDAvtSvFJlOTiyf5KjN77c2rmXEJoZbBQSYXG9ZyB/b/ky3Q9UVk+N4hlaqwKTz48KrlKmlHhgx7Y1psr6Kl+/LBedCHVt/1uBfctTWt0bzttmH23dwiq/X/dRx9ow13XP82HXp+CrT68sNDzV9IZey/emo0deHTfalwHwLRHOHN3fJIBn0oeYOC9x5D4gsJJ+kxI4xCguP0T/Tk996B3zz+Hnxp1xou+hpskSEYWS7t5vvs2Bbrf2fGD/95BiaOdUKrSRAjT4hAoLtXETEaMBT7BAXPsRDtHMGdW15YSZ2RKSxHoIZLwe+PJq/HEaKTbpX7hTVnoE4iqOA2nZdeQ0In9geD7yZ1mTNNgSX1gGozgI2pjdnYkeunS2gf4i8fVFKf55ROSqP7wDHlepdw4SsENErmhboqyeqacAIIKF5HS+pum5+v2TdZ133iYuYNb6cb6EFh2gfGjtwg38gK6Ow2MHOOGEr2E44xpa+DogCCRVlU+mL5TqY9rvsh+YxbFSjaxMTymJRhk8LEZ2UT6JNsJZLlif2Vod7lr3Dnp+pZb5/l3QH1xJnnpi9b95Uuf+C7hj+Wphb15XMlM/gyQUsKgKBYZ+xYAKKUX1oWyPwEnUI7ze4D76qAxF8oPXRK6FBB03f/4R83HgwCOCE+eO4vl62+jl/Ldrg/KZA23PeyJF2hmL4CT18EonyJMZHRUF3653quzX/At0G1QphPtquzc0rnrMZrnrsFvjNz/0snbtivfFf2vk+c/e2hDauvPcdquYpJNxQOooUIKS097CdVQ+EzLGq4lfeEMTfXzSglBJNuopV+h02gYnQtifH8rO823ErTZ2EY83B+2mTn7n7pxI37U54XVBt2XNN8pllC474Mh3bl2bD9GwlAyAZeSV9N/h6CNHL5ZgQxCStJcPT5KyRHn4OMz7SSC6yCutCnuUM5ze8+2NrdGuR1UQF07GBBmO0dtWxkC1O+IoOsab+hsb6aCDXC5O9lhD2tXfQrit+NG1hQnQySc1vOsBwnXaJCahmXYEv+wNU/MNbafcFM+W8AAAD//wAWvKAAAAAGSURBVAMAdDQgCOoCvXkAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Trancy - AI 翻译 &amp;#x26; 双语字幕&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAGMUlEQVR4nNRaaXAURRR+MzvXZrM5TcIRAkkkXCFcgfKAKJQEREuO0qKEVKE/pDz/+NdSLH8pXj+0il+KWsFSwbJKLKQExCoOIUKAQJAkoIHERDEXZJPdnZndsV8ne8zuZqd3YhH2q0ylu6e7973u916/93oEMEOoK1m25cmpS7Yuyi6udglyLmnjYGJhDOn+/nO3Os/s++vsnvobDV+SNj30MkxchXvK7M8X1309011YBXcxWgdvNj3TWL+5dbDrCtYpA0j8gQdeOJYjOu+BNMCA5u1Zd3LXCmSCJ3XhM7Ly6UI8AmlFaSFFwUFkvm5rybLnIc2QL7uKunwD1xxvzX1iZ0lGXjmkITIFxcWjtYFxgM/LnDA7hbTzo6bSFviibMjdvR3kmtkwEUDaUYltr5+4oIRwwYG4aAZMEDgBxgHKAP6vKhmzT/bOp4GflJ34pUH+bg2D1twJvh8vQOBGL6QK+wyQfRPnT6NFvsANjim5EOjqj/+BWZPpLo2JPBc4SgtAWbcQvHtPw/Cek4QrA1jBg004puUDn+sK18WqaTAuECadm++DjGdrUhpmewekpWbLKy4tA9/Bprh+w18cJ8qelXgSQrRQWghCxaRwk3NDNWinr1GxYoEtBrgsJyjrF5vapOoyEGZPAf1Kl6nd+22D5Xzy6krIfGXNiDkhj7KxmpmBlEUI7X7Wjo0m8Rl5wYH7tfWm1WSF/9AlUE+1hesh68YC5h0QKiaDvHIOyKvmAZchJezD52RA9rtbQD3ZBv6jzaA2thPHN8gyPWgXO0G6fyYtc4oIXKYCxm2v5bikDOBBJa+aC/LDc6iVYQJZOWl5BX2ChAD1WAv4f74Memt38nGBgKnKcRyw2KKkDGS9uQkcxXlgFzzqymMLiYlcAP11uyhD/zeSMjD49n5QVs8HqWZWvMwzwPBpRLavkh1otiY+YF5vI8gmelzP4+9Z75SDp4qFoiQtnwWc6Bi7L5lNu3Cdio36axtlgokQIvdoilF0goM+0M61s41jYiAKjsk51No4psfHP4bHB4Pv/ADa+etwp5AyAwieHP85H28Dzu2MNJJZbr++l6z+DaY5XC+tDutXsM8DnvcPkELKpNhzJYJ9Q+D9vtHUpp1vZyZeuLcIlLVVIFYW0wfdcWlJKdiBbV8Ij/toqDH1ZJDXxic+5DX2kiG2GdDbe0yWRWtiW33OKSUMgKTqUuDzMyFV2GYAXV69qYMWUaQCHX1Mw5B4ZCIOxNLJxGSnCmsGiFlDJ02cVwxCeaHpVWjVWVcfES0+gY5e0wmt1FYy+0AhWPpCuLXuNzaG6wPbP4FA9wAtU6VFu89oNoXyIqrAIXi/OwNG/xC4d2yidb4gC6TFM0A98yewwtqZk2K6iJE6RmADL+5OGIklgrwmIiKGVwX1eCsYfg2CvZ6w/KMyp8KAfR0YRaCzj8l+40mLJ3kI6vEWygSO9R9pDrdL5DRORZnHzQArpBjl9R2OEO0/fCnSEZX5kUpgxbiyEqlAibH9rudWkry5n5a5GDFVaufTAJ9lZ+8IA0IZiXtnmiO1aGWOBV+YRXNN2llrXbAWIT0m0HCKkCoSnbxWUBhPZssdCHQNmOoY9ukt3cAKqrwPRU5e9Fj16z0J+zqm5pKwdCTukJaVUacRD8lksGaAHDZoJkMhpXPDEgh294Pvp0tMCShpBYkfMuRw3fPhQVAbEvtNKGbZH2wdqYwqs/eb0zAuBhDer05B5quPhid2vVwLzroHIdjjiWNiuP4EaBjMjyJaedFtVpPItd72NwTa/wXHjIKRsajM+xqSKjOTGfUfvUxSHxfNA8lWoyLiqpkeTCWOQiApQ8xmhOc5cplsafJQ0XcoYlIxqSAunJ60P/M54PnoEMlbngBDC7AOAbk2yjkzYuz9GPD/8rvpNxQLB4/djBJRQVHyE9nHIB9XP1q2Q32igxr96j+g/vYHLaNosLgcmAvyEjEUSKCD0GIyfbHAkBL3dKLvgu3C4PESGdIUSDuPN+CQpkDaeby+hzQF0s7jtwdt5Poe0gz4yQHSjmZU39ZYvxmv7yFNgLTi9xKkqNMcYa862HPwZsv+FfnlNXgDDncxUFqeavh0neljjyik3ec2/wEAAP//P4Pz1wAAAAZJREFUAwAC8UcoIuDLOgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;沉浸式翻译 - AI 双语网页翻译 | PDF翻译 | 视频翻译 | 漫画翻译&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACO0lEQVR4nMyZv2sUQRTHv2/u9DjPKCiBFEqQS/4ABXtLa8VCbAQtTqNgoY3VVXYqiMHGRhsRUSy0FOy0EQQbFcLmCAhRAhf07tTs7nNf2KjNhrvd+fE+sMUyW8xn5zvvDUwdBczd4UZSHzwB0hnD9ZNLC7tWoBBTPDSaBvFhgI6mlDxsL67PQSGFAlwD/fd6jI15fOjuaBbKMON+yIwjbOJX7cXhQShibAEhW5K2tjhNJJCjKk5lBFTFqZSAoCVOpQVygsepqkDwOFUWEELGyYpAzmacDtxf3weP2BTYjNOO3+atzz1hVSBnnmrxM19xciGQb2w/1cmJgOCrOjkTEHxUJ6cCOU6bnQ+Bv3FyIeFFQJA4uahO3gQEF9XJq4BgO07eBQSbcQoiIGzFqerZKZiAsHV2qtLsggrkzFdpdhoEhNLNTotA6eqkRkAoU51UCQiTNjt1AsIkcVIpIIwbJ7UCgqxESuYeulw4zzrcsJY9Q9iAEG03bF+A8dEYnKKNWh8W+Bk319CltGjcsgBF2c3I8aULzR48YXMPfM4yeyK65G/ygq0V6KeGz/Y6U+/hGRsCP7I/3+l19rxBAKoK9IlwPro49RSBqCKwwaAr0f7WcwSkrEDCTDeXF3Y/QGDKCCTZ013+1roBBZQoo3RrOBjc3q65+GRCAXo5+7V1ffXazABKGP+mnvBoZ2N0+nWXYiiiUICS7FTz7+1FEpurn85Nf4cyCgX2NpqrxPyBwe9q8a8zK5dbX6CQPwAAAP//GJc/DwAAAAZJREFUAwAMnwBT+JkrVQAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;鼠标工具提示翻译器 - PDF 和 Netflix Youtube 双字幕&lt;/p&gt;
&lt;h2 id=&quot;github增强类&quot;&gt;Github增强类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#github增强类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHk0lEQVR4nORaW0xUVxRdzIzyUFSILwTEByoaH1EhFY0ajJjGF0T8QGP8sLHfTVP72ZpUE9uPfjWp0TRpYj9qjBF8xAihoCbaBhpNjIIyVVFx8ImKgiJI9zreO94Z5r6GualJV3Lm3Ne5d+9z9ll7n30mgASguLg4ddy4caVyWJKUlFQgdb7UGVKna490DQwMdEodlLpF6vpHjx7VXrx4sQdDRBLixLp16zKGDRtWJgKVyekaETjNTXtp1y1VjbSrfvv2bfWpU6c6EQdcK7Bhw4Y0+eiXUr6Wko4EQJThCP0g5ccTJ050u2nrRgF/eXn5Z1LvlpIFbxDi+6uqqn6Rut9JA0cKrF+/Ptvv91dJjxdmZ2dj7ty5uHDhArq6uizbydzAqFGjcObMGbiBjERTf39/+cmTJ9vtnvXZPVBWVvZJIBBopPA8f/36NdLT05VwKSkppu0KCgpAZd+9ewe34Lf4TX7b7llLBTZu3LhNqgZEmYy8HMuWLcPSpUvV8eLFi9XxlClTIBMbOTk5mDlzJtauXYshgN9s0GQwRQAWwvt8vkNm9+fPn4/Hjx8rgcW8sHLlSty6dUsVKlVRUcGeVCVeSNsUKYdEFhw/fvw3OFVAG7qDsMGqVatU0cFef/nypVIqOTkZ3d2uCMUUosRBkam1urr6r+h7g0yIE1YaHKP2cIjr169j//796OnpwciRI/Hq1St1/vTp0yGNgA5tJI5RNtgo4CfbwIQmKaAwxKDr9fX1qj579qyqjxw5omphESQQWZpsfuPFCAXI8zrbxMKbN2/wTzCIy5cvQ7xn+PqmTZuUyaxevVqdb9++HTJ/UFlZiUSCsmm+6MM1/YAeVjQMwsZJjUhLU5M2JzcXe/futXpUUeiBAwdc+wEbhMRH5OseOzyJGR7AgYdNSU1FaWmpYp0INDdDaIkcS0MUTUfAN2eOusVJzcJR6evrU0WEiGmODpClybpHyc0fBmZCfW1OYhs6sVzheZrQV7t2Yfz48e9v0GFduQLcucOHgIULgdGj1WTmRDYqoAvf29uLhw8f4smTJ6p26vQYO8l78hgABrQeYkRpKzwpksySPHw4KrdsgYTQH26KcFiw4H0xYOfOncrkokFFHjx4oAp9h4TXuHv3LlpbWyPmVyywozWZf1VvnjVr1rdaHG8JCjJ58mRlQjJnHFEke93sOuOkrKwszBFTExmUAxwto9bZ2akYzwocQaHvwwEuRuR8DRwgVk8mCjRNdgw9PL/T1NSkRsUCayi7jyspt4sRLzFhwgRs3rwZixYtQkZGhulzlJmyc3xL8JEhMzNTmWhhYaEyKwuU+JzYvhH6RG5ra4OXYCjOqDZX/I0ZKLtf4vbdcpAJhyAFMgqlV546dSrS0ryzPlL0/fv3cfPmTdNnfFr2wBWeP3+OS5cuQZZ+tmwxFHAOMERhgBgLlJ1zIK6FOfn7xo0bSglyulfIz8/H2LFjzW6n2y4prUAFOBeCwSC8AkeBFGsGKmC9MrcBHQ+pzyvQfCwU6PJpGbO4wBfTRq34eqhIleDRjEopO0cg7vGfOHGislEvwYCPjMdsSAwEA8xVymz+FHGANMqXnzt3LryAZ9HjH9bG63rsZHXM8GHJkiUSjY9Q10jbJAkyH0MMRrU6KDvHhuvBLxAHmNzielj/uLHWodNstIKxjlmmT5+OGTNmhBXgCOjvYJBHL20wqfoAs8TiMLrjiYfolVmswN6j53a6eKHn1YUnQqGQomyC73j27JlSQuTtpuw+LcVdA4+gh8hOQPMYLmuNMWPGhK91dHSontdBk+K5LH7qKLsyVqa44SGsvKkRJAUymh62s8dfvHihet0IjqrknJp5rBRgfp7LNHgImgUVsQLzrZzAOu7du6dMNDpckVHtl7zsPh4rBbi2ZH4eHoOmZMbp06ZNU7bNKFTH1atXJVfQPOhZMbPf9Q2RcCjBzQW8z897BrIM7TuaqWbPno0VK1YwpRlWkNm927dvD4pE5X6vRMCf6+dhBbQ8y254DNq3cVLPmzcPRUVF2Lp1a8T18+fP49q1a4McmAi/z7iLE70q90sv/GmVnUsEyP0MQxZIBoORJldfRuZhdkISuTh69KhylDrE7kOSxuQKJ7x7E22Q/dwZ4eYChriNxL0C3Yuy12kaFJp2zo0R1uz5vLy8iMwFOV/sW2XzjMLTdKRjixG19RQzL6Kl1xvcZKiNYNaOqykWCkF+Z1BGE6HgzCfFYqT29naaMk6fPh2RkRA5BoTFKmpra49FtzFN7NhtcJiBQi5fvhw7duxwnFrnKDGeamlpQU1NjcrSGSE+5BsR/rtYbU2X/NwR4c4INxfcjAQ3OZhNcCI8PeoVSUdScLJNY2NjBOez52Xk9pkJr56x+YYyJ24uwMGcoKlwx2bSpEnKq9Lmad+cAyz0qhSauVDWDNTorEiXvGbc9ZR2fTJXttXV1R22+qbrbVa7Z2nrZBR6XiqgC09FqIDuWVlHb0HxPu+J4B3il0oaGhpa7L73UW10i9AhGZWfZBJ/D4cb3W6SnQNiq39LrP6zHNO7FMmIJCMB0P5qsEfKFqHQP3jJadv/3589YuG//LvNvwAAAP//Wa1e5AAAAAZJREFUAwC3yU2Bd9EyfAAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;Enhanced GitHub&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAGzElEQVR4nOycUZYcKwiGK/f0hmcls+SbY86Y2LYoIAgq30tPukvLkl8EtfJ6DuT7+/v/r6+vX+lzdG2+Ln0+F3LcQ1OMn7lZBEc9MMf4mVtF8HqU4BghwTWAhPFuFIGYAGqDzxhypg6u8G6dAqYFkDu87jwJDwDVvRpqPPFsBFsAtXG4BofqbdVt0blUz7CbJyELQMvw2Hut7FxqUJmu3S2OIAmgfDBNw7fumz57nVv+ZpUFYNrpDZQA6gd7nGO9DlAK0bsI/htdkB/Cg/FHI7z8Ddvxt64AZroewMrlY8BMBb22ewgwPQAKwKvxsfN8adiWcWfXG06hKQDPI39k/Noz9KaL3u+3MJwCHqdAoxobq6xy/aO2WHufDwHMpFI9Rg+K3botPyXQjNgx9VlnCm8CkDY+xhVTr9XoMA0RUBaPLEWgshvYml8pHqAWg9VK4A28CUCiczm5eH0ttB9wovGtF41erYY8THrGn9mmfao2PoEYqlNARmOZ9QlE+CMAzdM0GoFliECOt70A6dRPI6XUSlNvZbgZxEXTUCeJ4Mg0MMChsbBFRUQAVg/gOR7AtM1D28MDGLBqHwKDiAAiKofpnUXwQHgAZbY/EsYl8vU9eBOAhLHipM1e/JkCpI5EQ7m5xFmAQAfRGADa2eoZOLyELX8FMPtiRaZVB2TkGPn2qGQBFA9wOjNT4wqaApBYZx8dyz6dehD0DrE+hnycCJJu1O2jP332Tju5OhSakIoFgn9A/Wh9HCzRXAiKRZy1WA627kqgdxGsap/mPay9LCiAUQBzAzdMg10PkDsgpoNzB8FwHaB1Lt96VKyMUbTv5TIIbMF94UOSvKawusMs3x3UhrQSCIlA2yPUngfqOM0UthbBbP0tz2qByH+IBP3GBXqrCNtRnM0orCEkBoAX4ydE9/8T0mcKuHViRcOd1mamQ+uptES8AdBooHiKlUvRs/fieDtPGcWyhng/HCmN9SjHnsyKpd4DGE2ZvVgjTgVvCCZGwu46hgdwDDZGwsQhkAhCABvCTbNbInhhcmRKAzjrAtQyUu3yXGbVcvswR+bkx7NlrO6rVYZTv+RKY/19+QxDD1CfWsGM5tPK5L8xZbgeQEJYmEFUP39kAQioxllx1IsS+UNrMOn7EMCG9Izauq6+/m0KeBBw5qPby+TrKV6Au6nEAT0FcG5ySpl8LfU+q54FWy80FaR/x9HvDeHEF5AI1P5/gGAPIgi8gF428OLkrYlRGjJ7fZSRYWSTFyadwFSOOXkDnSmUusepZUZ1jeppjf6/aSBnZ6l1g0cJyHVplPNcplVH/hsybs/159+3iAEkOuwkIIPXv0MDs8wifmFv0qqEUoa7Rk65/sQyHEbeoUwh1Vx3MIeWx/vYDXwYDZAazbuW6cU81DIrp7ba+InwABW9gKr+zgNYAbWMn4iFoIJWB7UCKmoqO9Oe3u/p/r35vrwOqiM8wA+l8bHBXEswKxllA/W1rd9DAA/upE+NFxGU9A5+QG28fgrgGtCT4TO9I2BQmdgN/IETjXM8x2pGIl3qASw7ytto9cIyAXgImEIEnywRgAdXOQqGbkU9BvAyT+4wX1ugKgBvnR4i+OT6LGBmajhhWok08OEZ8pSY4rqFoHIaKI1XfzdaV5cwvuSpIC6xGfRD+SZP+hxt33JXD8t/SwqIW1cI4OnvAmbqt4QoHgASzYwHgHYCqUK4TgAtV4/JDOrRho0BasNIZSCjg6DIanQFUHbSSalXadReh1O2mKXblP8elVP3AJLRsoegCYuV8FverXf9kilgtiMkO1IydYMyCmuvh/VQiWUxALXTWy5t9v4r8nZPawOQQEtcLgTtavwSTzFPrx/dCeAE43ti1IcuPUAYX5ZeTOJqHUAyeDot9dTCjQC0jL/b6McuLFGBAkIXAgjjv9PbiJL2bOYCkDZ+6+8d4Rzx5mAqAA3jR9BHwywLCOPz4T5jq89NBBDG56GR2SyfAsL4vlj+ZpC0isP4cyx/M0jK+Deu8m2bBYTxZeH2Y32sLaEuAC3j57ofIrEv4HAlEEtLwVR28RwtcWu0W1UA0qP/lh3CXtu2SQMjOuehdYoYYkkM8DgCc0zKA9L9Bj1zvBt4OfFm0AX0PF4I4HBG010I4GAwsY5aDHD7ap012P6/LgisO+ZEoVKeSVUA3joXWkmUWGH0QHlmEPssS18OtVoTwJ4boLbTg3DqdxLr70YsfTnUqqOwHePBY3HuzTF8ZunLodYeAHst1QNIQ+2nmXYsTQN3mWM9tHNVG2Ip+HJCAJcTAricEMDlhACU2CXgDQEIY5nucggBKLDT/sJvAAAA///SuyosAAAABklEQVQDACO5wcn+MzI6AAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;GitZip for github&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFZklEQVR4nNSaXWxURRTH/2e2WwVai6JWAvGBgCUxRmtK1Ghi8MmEaETpJy2BtKUgiQ8q8cXEPhBeMD6YCPaDGEKhH0sMEaNPRIwkgpZWo0YqqAnWQsG0VlpU2p3jmbvd7e567+7cdnez/JLd7Nw5c+ecmTNfZ7YAmaDyg/tAM+sV8Dgzr4XCKjAtA/ESyBfAU/K5Bla/EuG8JpwB4RS6m0exQAjzpbbtblGoTtSrl9Q6+IYZWn3FAT6MMHUj1DSGeeDfgM0dK9U0djOhSVKLkQmYp0SRdq0Cb6OnccRPUXsDtrcFMUEvE2iPpIqQHW5Iw+xDuGQvQlU3bQrYGVB5sIxUuFfEH0Yu0HqQg1yNozsupBNV6QRQ1f4SKd2fM+UNSpXTjOpHVecLaUVT5ta0byWiHmTPZbwhuoNIH0N1Z0sqsYBnTlX7DvH3Dtj0UtYgReANePC5EfxwYsBVwrVcdceLUrBPsr0NzCkcZlab0Nd0PDnn/wZUdq6WrjtnuhD5xSRrVYFQ41D8w0T3qOwrJMWhPFTeUCSTyVFnOo8j0QA18ap8P4L85VH8qV6JfzDnQpUHVhAFhqT1lyC/meSgfgBdLZdNItYDSgV33wLKG4rUtHotmoj0wMZDy6jw5iVkam+TbWTvJLPS/WYDWOA8KPy3TmyxUl7JfnhD+UqUlixyzR8Zv4FPvx02e83sYTyFdI382u8YQJq22C5XrZvK8cbzD6WUOd5/CY1tpzH5zzSyBWm1RdpoP6G2o5Q0XzZm2RQ8+eazeKqsNK3c6MTf+P63cdjyu/TcW6FBpwftkKOTouUFCOMZ0d16W60sRY2LebmZF4uCBah/7xTsNsmiSJifVuYYCB/Q/M9waVlx12JxjbD8shtA0phPKDlAlCHPINawMYI1lSmRW418Q6YwKyOUXqNE8k7kKWmNYFpqptHcH1ZSkTTISHqDnUcug49QLC6UzWGZCdgxwqsnzPI1iVuASCsnGcG4LmNA2682OYcQcx0zsCM/4rJp3LjQz8hLkjx71tMTn+oLshbQeeQdcWoaxZMH9mwvSNDhJ6WJziCvSFLejdkxrZm/NOvASfjY/GqdvX2yjqrh0upRjEhkNIgiAfpcOSFuTedgyemhq8gWX/x4JeVmizmaxyZkdNbo7pwHWHGX+FMFLGg9NoivL15F6dLbZ59kZhkx2+9PBofdM2OtznGPJCwvRE5kio9IL+yFxZHSdPMJqYg4nNrzUq6PZC0bafW4hSwiOil3Cz2O6k6yu+UPuajohA/YBO3cKk7hv/EaJMi7VhCvfGJR8ZYD0QuR2EFSByUuz+YqyJ6IESq9MrHaU0+Psfcmu0xCUb6udcE70dRc7Ueah2VbtAc+YWOA88lkq88mXIqKYa0IbbsSTSce5XWJsewb+MQxwnMwZ6LVYy8YwOjIux5vn2UBwV1nhXT28JFUYmaKVoe7rychwd1AmuCuIdR0UVxpmwlpwyeOIsm9seBWdyTD4lmbk5V3N8DQ2/whQ+3CPIgYEZ0uLBclR9ZbUmR3omf7R265qVchc8XEzi1NAXxCXkdBe5eB0/II7EJvU5t3Pemoad8oa8QhES2GT5KN8JrXXWH+SwJXDV4tb/OKOereX0PT1GtuD+ETiijjo9WdzAEJmVSb8Yg02N2BfffxGO6tOIii4jGp90mp4Db4gWwGqoNcdMuWRpdsRajhGmxeDb/Uty1X04HXmXWLv/uEVOERnpLLlTatA/viFykb/BsQRe4UUDhdK2tGg+i2DlZBx3gjzCSqzsqw6Mrtnz3ckAi3bFPXy+noMVFrrTxZJZ97MBdzMpEP4xK/xP5uE5z5DId3Lvhw8R8AAAD//w+eekQAAAAGSURBVAMAYRDlI6iwLqMAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Material Icons for GitHub&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAALQElEQVR4nMxaaWxU1xX+3jJvPIu38b7GMJglBrKALcIiiAkJTZM0ahqlIaoq1CRNKqWqSH42bZofUdU/VYpaqf1FoLQihCxEhCiE1Q1UBsxuDNjBNibY4GVmvMx43nJ77n2ewdjjsfG4Ckd68p1773n3nHPP/qxiFDz//PMK/Sl5+MEHn1u1etVT/ln+SrfblYbvDSTW29cbPHvm7LlDR47s7u7u/mjbtm2Dd+yIDd544w1ncWHhr15//bW309PTs3EPwpXm5vN//cvmV6CqpzZv3jzM57jEBfHVS5b86bXXfvk7TdNcuEfB5/PlP7q2dsORurrzpaWllxsbG5nM1YZLfsOGF3+NuwRmWUnH/O/o8WR4UwGnprl///ZvtxTm5lbz30pVVVXZu+/+YadDVZ1gDHf1CAomHkvMIh1lYHFqJ8Gb4sNpzcr1zfZ4vDvUZTU1L7tcrvS7k8MEYBHR0QgwRHbW3w/WfVNMq5mZMHy5gNsDppFPkCWkCtVLq2vfe++Pi9Ta2tonMQPAdB3SrS7gxDHIB/YCLZeBaFSsWbIMuagY8iOrgJVrYcyqnBFGli9f/qQUCgT6Sa+8SAGE1C+chfLxB2ANDURxkvssKYX17Itgax4HvBlIBT7ctesjNVXimWlAIuLlbX8Hu3h+/AaSvkShhOmGfSPXO6D86x8wOW6KTGR4vbJMfgIpPR2twJ6PgUTEcyDVkdY8Bvjn3ma6Lwj503/TrZ0RApju2UI+SAHYcATqudOQj38Tn5M8bkiZXiF5AfPmA6vWQZ47V6zF5+kmHMeP2HaTAsgxXz2dB7c6IV88BckYhiSTB8rOhLRiNaSVtZDSiRGNDiguJ9XRgcJSSI+th1SYZ6sV7bdON0C6cX3a5zPGpJRuQAr0Ae0t9o/MLEhryaH96EVSmxIikoJ8bgFQVgEz2AsMDgCPPwvp6ReEWkGVSPodkHroBvQopguCAYuCgzUSVMaOY5BozHTyPqGgTcyixZCe+TFANsG+IJsIBoDiMmIsG0pbC9jnHwKnjhGTj9vu1EHqZDCY/SFYhpHw/cnoio3VyYhMth6/vhG9Zv1h+6+bq48CqaTcXr/ZAXg8FPcdQG8PSZzyMFUWjI+GyWgZOxZHC2Oe7kPZBzIyhd9n504An5FnKaCAtWY9ZV55Qu8RHoD1HalK9QpgwWKw/xwGqz8o5jnjJhm8rKrTOt9kJlSkApz4cj95FLKDyCDY8UOQIkQYz8a5+hQW0Vo76XknLFIVed9uCnR1QKBH5MEsL58MPw8G2ct0jZFUaPpZkJVN+U3VIjhPfSMYsJk4LNak6tWAi9wpeRk+Lx37CndcPjFgVi0B8orsd02TjpS8EFxuWJULiZAH7Mpi9MOhuRHWtYvj1/iTXwK9eqUthBRAtawU89CCUkRrn0ZaqAdS6yUSpT3NrlBk7miGNNA7DoX5CgWONWchLNWRPHeaBFKzAQLLSVll1VJETB3aoc+gXGkklSFvNEh6HqteR+5Z4mpT7If+yDpEl1MelJGFVCFlBjgIJhY/gogvH46Th8nvX4ZyvZlcZtDekOYCKyyHXjEXxqJqWPMemhHiOcwIAxwEE/4qDBOhWtsVsP274AgesddoLrr6KUQfWkFuMweKkprpxcA0rZljIA6edETvq4SzoOT2QTlZMCoqRWxQMLOgci5mGuJEKndGzf/HWVO/Acrb5RtXofFcZ3gw+V4jIuwgBnJfJ9TThyC3XcKkQEHQ8JNr9lKQVCYnb0qBTCav4rx4Ao6je6BQBgleQo7JScbhRENx8SjdHZDr9oI5JlEgiXoYbi/UigUIP/oTWEWzRD2dlAFMRjz5aEdXO5z7tkFpv4xpAWWbkhGgNGMKe0PdgmEOA8+8Qt7Kl3T75HcUHYbccobcok08o9aIlVsCluR6JV4nU2CTec4Tw8nIA6PInQyk8BCUPko9hnU4zh6Bsvwp6N5sKn4m7l6ozEquCiwahtzdNrJbhUkFyuD6V5PiOMJhKA1fUo50SPw2C+5DtHo99KL7kuLJPe3wfLkDskHZK9mZFLpFt6eD8WidAEzjbrJRiRhVJJjpedD9i5Nu1cP98F49Y+MQMK8Hw+VzYJYvSIonp2fC8n5KN2fjSRTdJ4NJjTiRCU0Fx5L1aeHhLs9LauKyaULpuga1q1XkMZIchdJ/C87O1uQ45KnUm9dtHP7090IJ3BRrE+LRnrTGeshDA7fxuOrqyS1feevNt95JuEJlX9qFOrgPbofa2UJexBBVkBzpF0xJ5N6svHLc0RcgHGfTf+E5vB3O6xfjrUXZIJvovSEyT4syUaZodxzl6LgED52TduEglIFu0WMV88EuSIMBGIV+akWO7/q3trY2qSyBP1foypS2c/B8vSXu0uIZJRm1dvUk/R2C4cmA6V8Sx9MIx123Ew5OPJf2KBw+5z06hKCLauN5y2DGGA/eguvYJ0g7Xyf2jT5L7u2C5+ReWK5MDK14joxZG0drQhUyqYJynfqapNZh78iiEpFcGmqeoFzHy/uJ4lZc5Ookw5ayMtgH55XjcHReEusCZ+mjAsfyFYg5pbMNac31MEM98bPczSfgbD1D7wnbZ81fCtS+ALNkNknEIWpnz/HPIVN8SGQLCY1Ypkjr+va4/YOXhcueoZ7Oz6llTukxqQC++kAcyH22GryJYV8xtMAtqD3XhNsDd3sPU77/xEb7fQep2K/bJYjRur6FQqqhZ+SINUd7E+SRoseYVQX1yV8ApfOgPLgG2P4ONc+6yD46odxspViSC3NM/JnYjUaCdjLmIGLyqbuQXQjTlQGFj0eSNJlFKboO2bdmkoGTfdg41K3IpVo3f6StwnH4e6LUvaO0RCFbifuoaB8PNiIDVLPzqcKbJc6yqdPiZ6mDQYTZqI96MQYmCmSWO09wDp26DKf3Uzftfjo4ZI9HwFQVRCl34e9gRLSZlm5LxCSmyJi5JAU0HrUFwqXs9cKkvbFzmYdSBU2zDb7tNDV8qWsRITVq+IIqukD8LCMr394/ht6EN2DRAZH5NXCf3E2Y9OKWk8CWTfYiv26uq1TAGAXzKGu0i3IjswDRIqoDWuptG+A4XVdtnHDAniM8gUN7YxApu5+M/xTUblK/EL1779+IIa9NPO90cJzcMkR9RXa7chQYpmnKQ+Fw31gGTM2NgSU/FIh2VCImQp32w8c0N1w0D4MPrI2/lONE5lBtPOfh8Tjcl3OcigcwXFkN3XP7K26kchkVQA8JgQg8LqDedtoc4qFYzIdWvgTDPf7LbygUGlDWrVv3g4LCworRTS9xC2le6CULhF9W+767jeVIQ3jOMvSv+hn0Aj/sz3gjjLszqfoqg6yT2wxwZo07cEIrNiBSMl8wHT+P2o0G3RyTNTj76BZirpRL2FeGwNpXBZMWvWNsc27Pnj0fSL8h2LRp05+RAGQeD4boYwQx4OBSIdB9VJwTkTyw8MMT4YC6cw7ySKNxrOxiGCSURDgcFIorMiVvWhcFTXOYMtgcRAsqhOQT4VA7yNi4ceNCta2tbRt9wn8zJyendOwmk6RrurPoNjKgFtlfWKguo5bmSPhIEAQ5DsiY9aL5U8YRexwUaXPKYRCjcSJldUKc/fv378zNzW1Wmpqawl6vt62mpuY5SUr8vUDilRIt8YePpwLTwRG0juAk+3TR2dnZtnXr1pd27twZELui0eie999//2VKKwzeqbuXH078P7ds+SmRfZ3TLlxIfX29WVZWdn7fvn11s2fPXuTz+YpwjwHdonHgwIEdXPIDQ0NNJH2R2o67W/6PH8Tliqqqqif8fv9sTdPS70YFZhJ4ojkwMNDb2Nh4tqGh4ZOFCxe2xv5LJQb/AwAA//98HYJ6AAAABklEQVQDAEwAVzsjUa5cAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Octotree - GitHub code tree&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4nOxdb3BTV3Y/V5ZtYSAo/InTkAQFsGETmDgzZMJO/pnusovJTmOSD0k67WD6pdkvDXxpJ51OEzqddjr9AHza7IcO9nRayrQlJhsw+beYJLsDs2QQG3bjP0AUsmHjLAERYls2lu7e3333yk9CT5b03pVk6/1m5PekJz2/9+6555577jm/EyAfNY0A+ahp+AJQ4/AFoMqwNrQlQmUEI8NYu2BLO0+x18VuOOMAp34hflHO6cRkQ2N/LN4bpxpDa1NHJ2P0JKWoTbREe/ZxTrRtaKyvlwzCuAC0Nm3dz4h3zfQ9Tqxb/D1s+oYrDXSIVCqwXTyTTsruFLciOjjW9xAZhFEBiIQ7w42TE9ew/+Lfd9Gi22+Tn1+/9g19dfkKXbrwO/H6Quz/wf6zGGN8d6I+1DuXtMLa+Vu6OGeviN2I/gzPo2XdSrp31d10x11L089nYnyC9v7jT+U+S/H7BhLHYmQIQTKI0M1Ep+jZ4uaWpW8OwL68+QdWyvcQiNMfROnj05/g5iPiQe0XgrNnbdPWfQNjR1+lWQzd8GKoi+B947xGahX3veHxNvlccgHfwbMZ/s1F4oxBU+wlQ6gjg1hc3/qSUDFtD313vZRyJ4TEDa9cs4I2btpAixbfJrXDRGIiJA61L61v6VrWsPr6lZvnozSLAFW/JNhyXPThLvE2DIF/7AeP0FPPbabvtLXS/IXz8/5+aiopBUAg9PXU+R4yBKMaQIxz7djes/Lugn+zfsN35Ava4Bdvn4J2kBphzbyO7akA2zU8erQgQUADyJ1UQG4544uksVUARK+LienRZ/LnxKOBAI8ngqFoIUMSrHjx+/08ZRl16M3f+7Mn5D0Vg3tXLbd2chiHXsKYDSAfRIB9iv2/+/e/oVKBoeHDd07JcVGC0d6J+sbdujFa5m9tq6NUmxhqHlTWNBp5JuOqdKjZixDus0kKRO0CKYasVzlxjPOy4R8Wan7DY21yvxS89i/dcnhkAb5p4Ntj/WQA5jRAUIx5KXIc5woFxkr0nvfeeF9qBdEAO4V90LmmqQMPvp04D3MtxzZxhspdsEio2bo6alowj+bPn0dLlobT15NITNBlMdQAdwkDLBSyGgkP/PLnIzQ6Ok5j344TJZN0c3Jq2lBFj+TUjv8ZEDviOuJiExVvxXVwqWEwfn/v6Scy7J5SgOEQ10N82nD0GuYEQKpeLh7CQnIL9KCtYuxct+F+OnrwHTksEE0bVc2iUaEyLWNzYbqR0YgXxCwDaG5eLF8aOJZIpuT+8sifSAGxIM5zTzONjFyV71aJ8+pjevYCYcDsZURshWYKazWNa8EYr41bt8A9YaZEPBAhQzBqAwDNy91pADvwQHbsesHSBOq9Ww1TDOyzl0c3W59pYRBGqyt1nw9CszxIhmBMAKTRxclz4AFjWKgWQABNCaFlPJ+CBBizacytBRRocZsExvW6OusWFyyYl3Gsvr5eHsML+3bcLnq507G5BuNDQCWBBnzAYTxuaAiWdGyuwZwAMKq5xZ3ZCGNDACN2lny4gpwCGobxISChHTg+isY3WgCE44kMwZgGgAsV26+Us8VH8bh+1RIAxtl1MgRjAgB/OrYjmUu9PorAiO48gVQ/GYIxAVA+8jh8+F/5QlA0LK+j9dxMrQMARmMChb9cRvdoz52PwnFJubDl4pNBGBUAxnkEW98OKB7D5y5YO2KRCZFVZAjGBGDN/I49WCSx1sMfJx/FAauJal2hrWFycg8ZgpGIIBntqsKYnv6LjrzRQD5yQ0dJRU+ewyp329Jgy/Wvp86fJI/huQBAXQWTyeNiN4QQqLaN68lHaUDYGGICZGgYo43L6lYfvDJ13lMPq+dDgFJXYayQPbr5EfLhDgiGUfEFYYSakcfwVAAQh6dzAJ567vvkwxuk7QFhU2F4JQ/hqQDwpIx7l1JbzkCNuQ4EoTysYiCEPeCpQeiZAMgoXBUa9egPfNXvNWzRRhHkGpBH8EwAkO6ELXq/22BIH7dCRxkDPMW2k0fwRABg+eux3+/95gAtICE0rVdZxJ4IAFLAsM1OAfPhLXTKGKBSxlzDEwHgnD2NbbHZLz6KR8u6VdYOI0+GAa9sgHb8Sacz+TCG1ulYxTYv1ghcCwBSs8QmDPXkT/3Mw/6cQ1MJ15HXrgUAeXnYNvuNXzY037XU2lGJr27gfghQaUt36IvyYRxYHwBSRCvIJVwLgL6IkIGUKB+5odPtdbyFG7gWAH0R/vg/O+FZWHhjyNcAZQdzn343p1PDagCVnwb6mN3wBaDGkTEEwLOUdi5kzzFZKibGnFiSB+KFEjX5MI6Y/Y1cIAoqOpkC2y8IT16AS2KjdpqcmObbyWZ34Ex+pHhx8ElUfFecyP1UxEfpkNHXimpWtlhKH5mh/Tj1M8ZO1C0Lrj4gfrxFfCWU4/wxRYAUyXHsTkSrkjJEvrl2Q3qoZuK/8+EOyLQaODukE0fw7Dc6tA/g3H7WZ+1Mkjkn2SuQBpmDNkWxfNSkMvKHU0TSsnG5CJQxFYE/QHP9NfrOIc+ABj/9wRlNHmlHTLRFv/DHnGV1PFpI+4n2bhPLyQ8yxuOueQI1Nx5i/xtDDekLBKuXvzzsHcAdjN6PDgavK9jDQLA9NHZ0B7mAaz8A5zyuzYZnun4kExqR1eo3vrf48xefkVsIwC/eOSUFQLOZuoFrAYDa4alpRWKSNauWYX+m6cRRWPYuMaMA2KcWGDuErRC2TyloSuwHyCI0NARolffe+CD9PxB2hiHGTQAK1OmRg+/IfTesnri2IwfflVvNBA5uYJP2T2KaNjeWa+qn+Y2xP1Nq+a1+AIvi/cGcUws5k+AZUwoemO79yGn3OiYQDfXfrx2a5gpW/+fAa/8vSSNL1TYYprS9AjLLUrKYcB32a8MWqfDXxYzoBaWyTUDzBgjNe1y68rKmfsw6JvfVlD0mXlFx+IQwFnvtRmKGJzA0ObkTzNzg4y2FpfrATw5JcucJD3mBVA2BnMfwv0rF5xfdayyne4WmMkGKAYE91P0mlYCIeHWKNt0jOuwZ+4HMIQCqnUvJkU4ePbVwokrXUwoVoNiGHgFSZzwAGIReABSsTkBP8wKlElnl4z1IjE+Sl8C4n9X4MUasB1P3fO2TSrFwgMS0j/MnVaeO2b+TIQADo8e6xaabCoQaX/pbmzrExdDrGPfuXbmcNjxutMxNGph2loqRL6Z7aNqoKhKIgnKyfRYtdk+SbQfsHdgW0DqKQXzfwPjRvJVEbON/r9N3PFkMQtUvbKEOYVB5GR28Lo9Daf3D91MpgHq2O1TwvhSVDc7iXNeG2H0T+RGYWmvuQIzl5AE84QeIJwYSS+tb4BFcixu/a8Wd5BXg9Fhyx2K6OPgZJaeS6c+3qtIrhQC95kTfL2Uj//7Sl/TWoeMZ5wI+OTssP4NgnDr+keTom4nYQpM4jN4Yo6t/uGYlcT7RRj989k/JBHCNSnCjg+PH/o08gGcVQ1RxpP14CKgQZgJaVWPNoZhplq68kY1/+EvLTvnn/8xtWLmpdGICsAEgAGLs3+1VMS3PGEJQ1ElogZ0o9oRp1ZI7bievgWhYvIL1xfmvYEjax/mWu5vpb5/fQt/fcL/cx+s3scv0rc0YBLtJNVHbQIDfPnRc7rMU3+EVU4inFDHL6lvByd4OlVhNrmA0JF7nxJQSjd3z8l/RijuXpI9j/7lND9P7vx6mq9+MyhlMtVHb/FzMrjDrgP9/cLzPsypinkYEJRoapFWqC0JWE/SwMfy7ETp68uNbjuMzHNMzmWoCer/mWhSz9H3kITzVADAGl9S3RhAngPiAatICGDZg5EEw3//1kNXbb4zSmeFLtO//3qXeDy3/SPvWR6uO1Uz3fgRxDI31eWL8aXjOErasbtVZYqxLSG0IVrKXMwK3QMPimi6LmcBXV6/LxscLah89H41fTeVoAAgsnGtAKsC2Xb05/CV5CCN1A9fM64AreQ8eKpYxq211EP6KIWFNazr228TMBYs41RbAguv8yb92W+5mRnsHR/t2kccwVjhSCMFxuB7R+BACPzqoeBwQC03K0xidaGjcZKKYtrGw8InGxm1iE4PzJXs1z8fMQH1E1fjxFGM7TFVSN1Y8Ggbh4obWE0LFPC+mhaGLg5fofuG5K3YOX4tA42urXzT+d02G4RutHg6DRQjBW74QFAZoyf/9jzfS6xSM8R1Do33HyCCM2QB2qNwDuLEkk8gz23/k08lkAUPloe4j2mUNtb+pHAk4ZREAANFGjZMTEAI5z8J067HNj/jGoQCCPD98+5R+GxONv61c2VdlEwANmcmCiCOyYvvAK1irEcSY46ti2PqjXmHtGzP4cqHsAgDISKKUZL6O4D0cNNAILTVSrRMNr0O7FWKcaJfw8nmyxl8MKiIAGiqp5CVS6WVaI1SjU8YLwLJHbIIt+CQulnb3YQ2lnL3ejooKACAjkRGMahMEQPLkr1s167UCLHrU/4Hn0eYLqXjDa1RcADTSIemcQRAyHPIQAmtJd3nVJ53ozCg0+qWLX2Q7wJCsuU84ybor3fAaxgXAzjlQKLeAnDYS3y4eFvhwI/ZjGBrASQhhgA8fw0alppQYyxFsgkbHPopk5vB4IommN0Wsp5B7tyd6OEX7egmjAqCMvdcpk8smCtdmodMcPBBJjMzoSbIoaXPy4kAwQqFGaUyaWtGDtX704LtODa0RlynZRIfF6l1/kfe5PysfIy6cQbtUtLYRGBMANe//lFT9ICzD2h5cyY4OaAfJTsoDERXrnuYoAGA7IGDUBCAA+/ccsDc+VDpS46KM+NkkBaKl3JP9WeE9hruEreIqS/H78qV8u4Exn6xKMZONjxQuAA/uUM8RTH/CwjOIaWDRCQTqAcuHnO1cQuMjdt4UMNxgZdO2uBUdHO/bRi7RODHxOgpE4lk90/VUOqRcrwYqavi9ZADmSKIUhWzrumkr3nIDp2+wrbVpq6sqWI03J0Btk2589HzT08es5e1OGfvgAip2QhbYtDc+oG0bmZBrCMZZwnQJdA3cqFbRqDJSav0bxVQiH75JtZ8LEIK0pmG0p9TqHbICGLOKQOF8lSi2YU4AVMnzXMGhOs0JQC5BKUKgK5ThoZlU+06A0OnYQR5gRVfygi0jDLD9+ly53OFe8gA4wZgAqLy0OAynXEIAS13ftBQC4RWkApFdoaxSXsOt07URO1XdhIIAtS9sIEShhp20l/XclKs4aa6CuNnq4cLbhS383rmAG9dTNvAMrWnqOFNIYURdoQy9v5ILSfb/zzi9NNP3IbgqVE5qjHxD13uHrUBQ5AGYmgEARv0A9ukNMm2cSBjgLgVbh316BeYrcODY2S7Sqc7KbQzVX+koXkzVMDUkzNkD/JYZgUyfD9AKu1MLGgtL4U7XjjWDo4q9xOQUUJ6fDENVEoczKC9zGBr/9IdR+lWBBBN4iDv/6a+pVOB/jKj8fqRyuzHAnHIPcwH3j2HL6f/ZBMrTiRDZRQAABbZJREFUHEAnlGUtwB4DUAh9HGwGMHhgBpFNAqEdJFgfyEdCMVMiqU60BPIltOI8oXkNedcgdAyfdnjZAQ4D5EriGDKO8tkrOAdyACCcXlDAFYKyBOchnl3M+WVxSTysz4Vxk49ICbMEJ/8+GgT8QHioTpDhVT1vygfppCUmEtMMHvl6L84D5Mtv0CVccE+lrkvYo4LK1fhA2djCcUMIcsQ+JB1qLgfrZcHQZVNyAaxdehhxO0PAeaQHs/uI43d0sYxSeIcg0HgW6ZAwRnvL1fhAWenisagh1gDg/o2h10ENW+7OwhNJdW91omDBuUwQNNkTNLNRyhI1rhHaENpMXW+cE20zkf2TD2WPz1a+/Pt0NBDWBTDfxTgsw8LW5adX0elcTt85d/q3ZApY43cz7dQpaVlRQbLXT9Q37q5EjEDFAvRh3Ypp4l4dDSR6WBgGEF5oXBAwYZzXa/563X3oXP5hYyQPc5dbIMAjH/S12YcnDAswXHNpJoz1gVRqt8lp3kyoaIaGkvhX8VIUM6hB3Al1i1cpNoIJ9a8x0/R0mmzqVL6vgbCxp1qigqomRcdOUZfmH4QDJTUdHiaWRWNiJtFO5MiPXzBGShQUNHCeMV9Tt0fSnzAZ/3cWDi2wqaUbfZyqAlWZo6X5B3MdU67UCLlEqcmqeQkgOcWGxvNY8GNUdfCLRtU4fAGocfgCUOOYtQLgE054g1krACbn+7UEfwiocfgCUOPwBaDG4QtAjcMXgBqHLwA1Dl8Aahy+ANQ4fAGoccw+yk5GxjJlXcODZepyY1ZpAJWFKwNEcgWFmowGQrEGp0O2UPBIMTmC1YBZJQCpQEBmBCMrN1dQaNb6QIyKwIyRyUrzOAmZDhYNcP4KzSLMGgFAzCASS7DvmGN47oK1Y/XWiFNOgK2x4/l6NmAL/4rhj1NoONK9FDpL5TyoBGaFACCdWha1Jl3O7dbsGzTqNMs2O4Fts0Psnq0X9yPOEDtOSR1ILbNOKgUgnl11VMPOU6DT3ZEcS1WOqhYAPMQ1TR3X7OnUuXq/TgVT6E0RrcCOE8lkugE5nQiwlBSWj3+Vu2ffowtIcerU6e5HZDGH3JwH9nR3ZEYXw3tQCRitF+AGMkycZMOH0Lueen4zbdy0IeM7CAo51f8RvfFfx3QpWFDQ7QoQfw1vfvjspluSNTVPr/x9Y+MLU3XBgWAy+aJTwcuw+N9nTp7D+cMswHdzHhD7U22oQciYpWXs9Q9QShbnufzZl8hlCImP2pfVt7IrN4f7qQpRtQKwJNiyB9Mq9PoXfvwsLVjYJBsZNXpReOKjD6KyBvCng5/pn4Bpe1t9cgqp6HdatCuZxaUhMBAWFLZENs6FG28eRmUTXfAS9Ykf2rg+o0Ht5eaIs/ZJ8T+CqSQadiM+O6nqDCcSk+L8kzKbORgMSppbpF6rcm/09dR5z4o9eomqoYrNBhjEtNE3A9JM2/o3MP5+/HJXRmIoGh/0bmr8jwlheciemAF2ErFpy1XkCr9FAqcq294/ON63SeUuvJJF7OiE3sEx93RyJlC1GmDh/AdOBKeSG3M4V2C5nxSGXg/UvWj4l7++eX7AGmv5Tl2qTqdsA5aNcCSdhCl+13Hxxs9i9pMuq1v9FuodorTNJ9Fhaf3rc0ALwPBUFcYjSxtawoOjx36KXr24ofVwgNgIernqTpmGnxCYVIC97HW9P69QtRqgWEhjMYs2Bg2OREzb1C0vQ6kqbYPZRpp7cJ0YRvSsQ3MTAKJHz4lnN+cEAAYjem42ny8SMScbGnbNlI8neY1AQKkYTQBNUG0xllg1fYQAeF8evQKo2iGgWCxrWD0i5LkdljcaSc0K4qLh/yeQ4ttQcRsG30znwXfEkPKWGBJ6OAuERQ+JiHPJcyJDmRSB85Wb54vmBK5GzBkNoCE5BKlwavpCIAmqWUqO7Spvcc5gzgmAj+LgxwPUOP4IAAD//3BidlgAAAAGSURBVAMAOtVLyVODaKoAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Refined GitHub&lt;/p&gt;
&lt;h2 id=&quot;视频图片下载类&quot;&gt;视频图片下载类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#视频图片下载类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAMiElEQVR4nKwaa2xWZ/l5zznfrV8LtPRGoXTAgA4yEpcRM/3rTzeNwn4YY6IzGwsuZBoZxs2Q4BzyR6MxNLhNnSxzjB9mJsbfJLpNMmcyLgW6MloKBUqB9mu/S8/F53ney3nP6fnohrzd2fnOe97zvM/99uKBNfbv3+/gFeLllXrrX8epHSFE2wWI3iiKPCEERPiHz5A1cA3Qmmbjbt/a7xUcH58nHRAn8dXx6mThr4iXr3HU3yyCdnDop48DhIcQ3KD9moDTf4J/AyOaRpie4/XxSGwiwBBhE8Sw9Hf2mniPYQBn775dL/8NmsE+OPSTA3h7UXNATTvxOkY9gTj91sg6OEfz+i4s4kNaF6o7MUK9XMyIyEaLHjS3PXX/+b5dr7xkCDh2bKf75JPvBIx8BC/it4HijSsMIyXPNYf1pnS5jgOe6zJGfhBAfWEBao0FWPB9CMOQ17quA4VcDop45XMeEuhAgO9ovUbXJkTepbwjLRAgvHi4mgjCXUjOs9q8qxYR3sh1EdlSsoETHZ4rEa82GjB1Z4avmfkqIt9g5IjTmnxiroOE5jwXyoUidLS1QteKZbC8XMZ5AY0Fn5eS5EBJ1FJNG49QPSMRzhOkTiyB0ekNp/H9ZnyHBAjX0pX4awRISNEmec9DZOfh0rUbMDl9C2rIdeY0IplWHxsD+p6kQgSSFFa0tsDa7i5YtbKdn4kQwnuxNIStW4GSwvn1HSNb3Ee+8sQO3O5ZnECdF5610HCCkcdN86gCAQIcHhuHUxfHYLpSkZxFSXh412u1xCKbfdo+lCToXq034OrNW3D99h1oKeSRoLKykSiLCG3jDv7Px4eu6Vr7KU9EYodEFhdFItKoS0MTBpEibnDt1h34+OIl3LjOOu2hJOh9mLKNrBHPx2tIBXMIY75Wg3+fu8DS2DrQr+wpZPUyRIDxgMYLEO7E8e0MNkIZCjCWYyNDxjcycRXOjl1mbhfzeYm4MlLt9mjOUZJoNkh9bPjsCEiCSMgYquTtyhxs3/wgM4gcAcGz1EhaiWDPSGM7EdDDHJIYGGoN5xHQGUT8wuUrLGb2axpx0P5bBjjS42q1ikgqX5CUAX/TUiwxGlkejaRcqdbgn6eH4bGHNkGpUIAF9FSOrU4ydgj13EMEeKC3E+YFI0kAh8cm4MIEIl8smI3SvlsHpEa4AKsG+nDjEqpVmCCB3vvoIyZRkk4olAowBwwh0s485vz7Z8/Dl7YOssMIFMMipdd4j9TenhfzRwLTgAr5HFy+MQXnL09IzjdBXg/0P1CpV+DwM7+Fjb0bIGtUwxrs3PstaMzUwfWUs1Mey2Yc2QXFkw/Pf4JEbE6os1YkbROORt4OJmRcc9U6GuwY6yK7dAvpZjpO+hoEMt7QnSIvR99QBtMaGis0SzcsxjADcd9b6OXI7kgqNvMMIZEiQHNAAyWjOn1pnAElPEETDwPqe4eM0fViIgXEl56zFCvNBpsIUpsSOotP0bApSNpE6P0IgGN/TO6QdO7q9DT65tvs98OwudrEiEgH5wqVVlgwZVBr7pWgCRGMJMjofG58AmxG2Yx09KTONGlcvHqNo6oBdLc0WWdLkVQh1/E0Vfc+rGhMQW96tsIxiGzDDq6GAO2eyMffnJlF3Zvj30vl93ozSYf0564lgXvH35JCJKUwdv1GMj1R7514QnLwys3phHUtSYS1VqbSDtyPoZ0KDeI8SWEWY4yXDGyYVyid4qwQ/e80SoAyzbSolhykgo5gOPeHAmG5buDUm7SDJGy7EkcjSDpPUZDSY5LEZx06X40wcJH+Gy8E94kQuQmrEUkh6XytOECcm+U0IDRudenELEYUa2f2QJ7jwedFTt6iNG5WpJfqTQz2rdSC3lisFjBXq+ufCQDJ/eLch1XMkSkyzeW8nJFA1qA1tNZcSDB9rzJhyseaDkKaovOCH1ixQIBno1ZXhQk0iVcmcRNyw1qtqojAYgRz+2JQuqsXwjoNKnMVaMzVwcPApCN0a0srhCKUREDSadjRn7SD7DTv6WAJkGAXhX9dNWQNkw3iRgtY8/c9sBqqmB7QfL1Rh56ebsg7OWg28m4etm3dBrW5KlfcLhZ/Xt6Dj8+cgnyUk4xJ2U46+gZWJkwjQ95LGx+Jf746Dw9v2QYv7HgeGkGD513Htfs6ScJxrpxvgV/vPpSAtf/oy9BA1S2WCljtBUvuneaul0aM83bIloJWoQD/Okrt8Jfjb4GHfv9H39zDSZttG2nO6d9+4EtDx8c9v/sxnDhxAtZ09WHe7ye+t6hPMMJ1RAK3BAF5VSI2G7YK+fjX39UPb7xzFOcd+OE3nmMVZCaIJNF6UKGjjXz3b56HD957H9b29KPt1e1iJc01ExPIkL0UjhYBQhYt8qcsPjOicGzEwKrzQNda+NOxN7j3s+druw0RIlV1EfKkYjSe/tUP4KOT/4HVXatj5JeI+PS+gNmpzWRO/Q2+aBxtpaLysTHHFwEyLk/67ToSMYBEvP7WHxnx5x5/NkEEcx6fyTsF6IWeOrQLzv73DPR19n1m5BkGqmgZS0yKNVSx6fWepoasu7VU4kLC575N89RZe4tIRjyWBBHx6puv43cu7P7q04YIgkub1sMGfPeVZ2D07Aj0dvZgL6meqHWbcV0yErhEpbaLZrD+xNH5DvV7ilhG0iLjTptEY62ncZ9AqtNA51o48ubv4fDfX2WOL/gLsnvn1+A7B56Ci2c/gZ6ObkS+sSTyErR2AsBJYufyNuVG4zXJpAcX9na0yz5Pk2hsCIp0HRE/N5DLAyv74fCfh+DIP/6ABVEeZmqz8O0D34PxkTHo6uhKIG/DS6cSdg1O6cOycolbkb4qWU1vST8QmtTC6FmxHFqLRW4XuiqpW1QPE3ABmamzj5q+rnMAho4ewQ5rBP/68D24OnoFuhH5OiKvYdqM4TaNFeEh1V4MsMm1prNT9ohULqSH3VLh8pHUaG1PF5z+dBy8gmt6QHYxzXvg/+rYoYsyIgaW7rAS48Th14Y4eLWWynBndmaxNEHmOHlqlKWcg1FtRLiMQW51Z4c03hRDTVKh827KNQawxTd+fYp7l+QetYTAjgMCg9mqlZBzPEXE4kZW7+peNr4gCjPS64jjR8NvwMz0HU4rbOR1l6+BydsWbDdyqwXb9rre0ER4mhOaolC1VeijD4bPm+JGWw5HYuSK1+bBaz8bgmX5No7MWfl/Fll6EGEe9pJHbozC91/aBZgGmk6GQR7VuBtVur+7k3/rDgnoQstuq2iqSKT8Yfty2NDXywWOXeDLvk2Aza4WaMu38hxWwtzYSv9lz8o/T0jh50U+SbSl98TIbesH+LcesssBJuAmUgnbcEhcD/WvgQoeWlBHoITdubjFB9xZu1GZwprUMT2azzM4suYKMFW5CYkzM4WDj0z64uAm7g3VmfuO4T7YTuXg0L45vLVEqnMNqhWvCSGJnDw3ws0lJiIKjQ3QdT8Kx1zosVRkwIq4aHlk43roW9nBJz52hzriMobxIzznKS28hjDW6Rmtg5oIEtX2wY3w0YVRbnhRa51FF6HiBP8f+tJGBNcGtB95GRqPYnu9t33FYuRtIqQIrpEK0TnsOgQRkmYQ/sLuUtMdVefRzRuwQ1bEc4JJNibyCoKBwz0Pux9LHm95uQW+sGEdtGHQSiKvk1Iht8N2K8gzgpMOuq7jElokzyk0cJHsidL51SDaxGNbNmPSV+INfT+wW5+SqyqCZl3pHhLN1elQEL3axjWr4MvYTi9jQindZey+5YmAIVqYFANxV4d8D57B502gDtCiyIgoqU7UO+UmK8DE1E1uvM7MzTMwihcuF/cAiyoinZ5DXBbSRakxqcq6VT2YKrQwk/RBYjpPsnBKHPLxCj5mjYJ38YuAbQT4uEmjkDgfDhVX8lyURzCFzSY6qbyFPZsqczNUhYklFXWn1IN6nctaSnjMupyRL2PaQvkNXTr6pnReJ0tkLtnHrOagG0/p8atAycvllMeq6NLGTa/4xBERIwOcx9SigvUtHQLSc6ByHPLndGBSxoKJECZHQFym3IsIFgIWFUAZMgzkZEQmnzzo1uMXSIRDREiR+QqQI+lIiDOxoeyryrYitdilp4h3Vhtz3UxpO+VXmgFZdbNerw6hQvUu+58aQGocHHoBT+0dah0M2vOJblzGpnFa3HyIjO/1c7ruMMTE+cgw0rJ3365fJv6xRyIfpn/KQgtqk4WH8ZudeL2N06N4zSPABgLCS1APhS9h/dbPzl2urPV6TsKXe6g58g6jqLdvEy6EE+FGONo4/w8AAP//YLj4QQAAAAZJREFUAwDCrqFVFd0VWgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;AIX智能下载器(图片/视频/音乐/文档)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAIAAABMXPacAAAQAElEQVR4nNR9ebwlRXV/ne6+99133zrzZofZ2WQTgowDaET5iQsYVFQEURE1oAluQUw0Go1xQQWjIi4EFBE1/kxEwq5IAAVhWGdE1tkXZn0zb7333aXP73Stp6r7viG/X/7Irz9v5vbtrq46dZbvOXWqum6y6LzHBB0gBIriE3uEV1Be+m85iqoCc0ewm9i5Dpj27n6PF/j4/tmyv+v+EakPtEXzJ6LTFZiG/1hwATvfh+Iq0BTFsALMX8OCmqfpTXgNc9/NH07z1DQXMLiJRWWNAMCVz/Wo+El5sbizRcU9fe5YDPNP6E80/EHMWUWez1w2ucLFDUobtD1Fnw7ORrBk+PUgfyAozS9zqugz8mvxHjc8AyzsACAAf4IXAUk155quHL26gdGOBa2Aqxzks2h6BYYF4IhHTkr2J1ubFiWDzgI/Yc3n64CQTa5rQf2Y7xDvaRQ+AKEtgtcaeoah1DGnM+qej+FcShh0Rame7b1+jtlY9gWCXtFzCIHuudbVJxTpRlCP3ylPQdF7AoxdOVXmPUfoREZ47pFjBYBgmMN0isMZVzh7Duzx/JHx1leo4L6rHQCiSKSI9D+AaxdQySbTePCbLDI9zscQfqlaqhxNE6xA0CkMuiYCFcN89326PDK8XufVJbAA/oyvkV5jItRprw+YI8jdU4WZXDPG0lFvpmOT7RKI0cl2K8UI8oyA3P+CmWGg5OBbk6AKm+2siSTKmmi0UoD8IxbHAg/CyxR1KDwgVx4Kq6BvSVBCNY8CQIhpG8Cc0juuQodnbEkWP2EcQa2RLpld/qdzDzj4gK5Vz0z87bVb6y1MIsBiJw28HQiAQFPuURFHYqqJM3rir/3VgYcv7l6zvvapH2/dNdoqJxFirnIIsIdrlWDmCUxawj8R/i1OTehQE8E5xFBnPwdADpeskGH6Rz3pAhDsJCC+ecGiFYf2NVvtt7y8m1h//rc2DPYm7XZAG1dS8PujOwz2LmMIcbnVxm9dsPhVxwxQE4vndpdL8M7L10OJwYnVJyzkgGGrbUeduXNdRl4NwE0EOhE6Ydc1XRj2w0LVkNY/z9L/qwc9TLq5ZE7XkYu7a1OtdhvHa803njR00evn7BppJYmOY9B5ekAXb3BW5a1en5I4h8dan3zLPOI+VU6SaDRbxy7vmTtYarSMm/bQDnLArTps5WmvW86D3yZHSMEa8GhV16MO+oqeOeTxHLl5IQPNoBLhE8F6oNVFJDHsHmsRj7pK2aVSDFPN1qfPWfCqI3v3jreSOHOboFVbN6cUCrWxIfr123O6kSRiz1jzzSsHP/KmeSTgUpI9UC5FO/c1RybbhH4Y9LjIoRsVBe8yABT4/JAG/1aeSxBZ+Wqm+Frgc94yjn91+GM460gMGsufEI/KCewYaX3xX5+Pokg9maYijuFbFy6aN5DUmxS0qGAKlPrTISUAxg5tM/wzo4Wgf7yWHragcvn7F7XaqfLr9D/V//mfbhuvp1SgwIq8b8i6EfLInSAwEzS3ICgJBW2EURB2cPvon2O+InS1o0+wKKrQGTQS7MzojX989/D3bt7Z3ZVQCER8qU21F82t/PP7FzaaqfesYiKiZ6PAlAucYrRT8uTiig8sntmfUD2RvFIpx1/82babHxkd6InTVPhiE4UOAAvxDQvOPHPHfIm8Tot44NgLcrjpmyKwAECwu6o2rz7wHb5/C0zgZMnQNWTaWumK7lw9etJhPcvmd081U8IlCkxftKgH2+kdj472VYlZUvuZo0I5hAPuitioI47F8Hj7q+cdeNqKGRP1FiEboX+1ktz0h72fuHbLjL4kRSZU2zPVo5wzMNYg1LhRAOun91Go8iYwK+A/+QAXE6LHX+drQOsXChZdmcIofOUEpzGBg7JDYwyVKRt/ZV2Cv/7upp17G12liHSTnGe90brkrfNPO66fPASJBBG9bqJPuNCBmYL+3aOt81819J5TZ0/Wm8R90v1qV7x2a/1jV2+udMVeBwVjmq4w5zP5LfkHignAfaE9QV/p2Z3cEekbDhnAk6I908kYyIGUjUpMnCKAA5KHV2A0yD9Is0nBeyqwbmfjo1dtjiPn8Oj61/9y0ZLZpYlGml0XTrEg0DatA0CiGplov/Sg6pfOO7DRlJ428wcw1cC/+s7G4Yl2pZTFviJPhwi12h3ICzCrwY5VaM4gY478HjwThQ0ErTrBoAt+HdZbpmPYtgbBDCcIDegvioKq/RMgiBAz+5IbHxr5yi+2V8qJSksQHM2bWaYQXqQZgov9HRRVEHYNVuNvf3BxdyXKHpFRbLkU//11W+57ZoKgv9kWvh2HVFG7Gc2R0iVfl1EUPSjYPRaDYL52HkZnRzxwzAVMr8FnpY9F7iIaKeSMRSt41gaN/imYabZxtJZO1FOCYPVQKqN6aceYyv/pQx1pW3SXozsfHz1qYeXwJVWK05MsKk2XL6h2J3D7IyMUMqW6sLQPU4++lFUhKJVxxYWLTzyib7LepscJzbq7oh/esfvzP3t+qC9ptXTDVJJuqad0lfQ1xXYLJxspxUhqNF5OWB9dr6GTBU07DvXTxwocFp33qAcRyH2AvY4suRkIiUnOgEKGwrEg9lHWZf5g6cTDelYe2rt8fpn6X0qYFIsOgpmmFMOyBV0UIDGjgrXb6tIVB8+DQJZBREEuZNn8LplQ0jpJGv3slimyBpmMK1A3fk4Dw+Hx1vrtjQefnbzvyfEtw42+7pjGKGZYjloSgvVe5MShBFQQKYVOGLwpSciVzx/cW/h1WW9P3N870R7qjS94zexzTp65YFYX6ghi/xii8lDtVLSyfJkRuHyOBlAA0yWq1C36n4wGfC6V4khzH/ZLAhhqxY69jZ/fs/fKW3buGG1RKqmVCleFJ7oOAhD75yoses9jhff8Kg1FgrsT38Gbu4See8Zap764/7L3Hrhobne7TalHtGTnu19syyAiCInHVJgOi+kPiLhBZkfaCbehuO+KYLLXJI637a5ffPWWmx8eGepP2il6EBKAdMEN6HRPHeQDLhQdCPO+ueybh2MBThHm7hltvf/Vs6760JK+nqQ+RYibeTPSvkjyFMwI0Z7bk+BWnl2R/6AqnK/BuCFHpXRIrnLhN52vJAJNMBniVLM92FN668tmjIy37nlivKcSOz3IcQoFB0gf8DX7IOBtfj5A+AI1ThuNfwdeBgPuD4+1z3n5zK+9fxEl3BtyPBUVuirR8Qj6Bewv/yC8sKqE16XAE05XCRFP2EV9ocjqy+cvetfJM2lEEsd+AyzQhLC1kF4IS7A5YVYBCBdggmWyx3ldxjVAgTaFOkctqnz1vQubrVSG3qLw6IQfmDtn5IPoFDN2OEAUPAy55/bvlLIZi+yDxHDp+QuPWVKlAMmE1LmIkYVJbg5bl9SN++KHSBT0tuCrYNXnL6saCB8/c/aC3mpMAog6cF90VMwcy7wyXjxRSPD0R6feTVMJp41MgYKCaiX+zNnz0Q5H1KCVZ1Qxt8DH195czdICgEdTOTqn1xEFbKQjY7X0zw/ve/Wx/ZRHI+SZ/pFOJiostAk9B4B+Xzq6vQ6tuNqgwMJE5yuYo43GNNS1Vx3T/4oj+0Zr7chqo5uQKdJQLPjGLTuyptOpIxDW4Kp0epQF7/jmE2dkkSbuhzl5Cyi2A3CfisZpxBZUyB98IcIWnU0kjDYFnHniDBoTgKcI5mZBHcHIN5RIZC0cA+7qy/nQHQLFFHLoNNSbnHBYj8jyB7B/o8kpNXaGI1PeWek0XgRyJ0E9IqfdndAhf6hFFSsP7ZnVR/kM9Ou0EtHrOBzl4eoZ57XpqQhzroQJA1hRP6vkr80gB7VgZjJ/ZonQH/aHzuCbKhTpoIIgigJJ17K/NGRZXkJBDdlQTj6YJf2xIyWBo8yT7rVLqtai3FRpwUw9nWmDGlMVMt6rf5av3kQVml4kwFSS66PoQAn4taB0UMSjWX1JtSuqy3mP/IGdjLqopEzR0LgXZAo6i93aadpsmdRCToWFT7+QwquUs6VG8nGkZxvy8SgSnEXgy4BhnugkNHLAlFnKRmRbpqhcmmUbAdUUnWO3ej7sXx4P6Wui2wZPXsFjwqVbvNUGtj76jBN9C6FDJZ3psH2jP2JTpZylHPaOt29bU/vtM/VqOXrfSb1HLSrXG2lUNEADv9qM+yW468n6T1ZNkAhf86LK/zq8u7c7TjGlPE8WH4swws0Bb+dD3nSTyf6iQZC2wNL24P75CGvB3eT6UBQ0DtqoOMddMsvDV3SP/NcPAgp6vpyN+ynnhavW1q97YOKGNZNbdreztlJxze/Hb71ozssOrdSmsgC3UP1V422Z+/zBvWPnX7tH3fru3WPL55bOOrZ6zoqeww8sSxjJDIIiNYjcs7Ye6AQBvFiH8FCxxa1ZQafqXGkRbVvGAoSRnioIzP+GvqPAAEKFmo50bvgS5aNYqTzsGmnd8NjkdQ+M37++0SJlr0TdvRmekbqNjbU/e+O+33x8HvhGhoHrwmxRBc3G/OPNI6IMvV1RZlUC1w23vnjLyOV3jb3y4K7zVva+7qhKXzVJU2kQVL/JfPjg1Nlv+N9QeNgdrJWAQqwDx8/ElhCM+/Z5rQ8BRmKRDMwzhRAU4D6hfJrljaGrDKlU+R/eP/Hvqyd3DLdFIspdEU0fptkMTPYIje+gK9qytzU+0e6qRGnbNQ5+J6k4TUZufb69ayKlyilQUUXpPCoDTe/f+kTt1jW1ZXOSs4/recdLe150QFlYg2BrUmEaC/BZlGdCoNBaj61sULPeeu+E4wzkahHCj28Dm3DXgfuI/GEvKp5Syp6i1b3jrRsfq11z//h96+qtpiCVr/ZlbrOdLWQTpr4MmqZG24uXdvX2RPWGjT2Q12z/b7XEwqF4bm+0bqRNFqBkoLwL3e3uzvBr/b72F6RBnHJo5b0n9r7miAql2Mgg6k05fwcvAIJEyAr9hYUoFqsdXKNfg2R5gsFV8Ity3UdXdSgrMLn+DhagClGGSLJePLG5QSr/s0cmtuxqkcqTXpe7snnzVuo6INOT2XTY1Hg62Bd/7ozBTJnk9L3fWdYAiEYb+6rx588YfMfVu8eb7YRqjrUA6GhLfpBBxGVopOKmNZM3ra69aEHyruN7z15RXTynRNN29Bf5Msh3lzFFhBeYN8RpoMAcyX5LOGgCnetw8wLcP+B0FiDkTGSlFP1hbf1Lt43e8VS9XiOUB6fy6DSa0ICu1Op0NV0wKznzpO6LXtl/8LxSPZuXDwkMJJHQnHAjPWdl79Kh5Ft3jd36p9q+sTaUI8K6LJ+TKkpkuCVEtZoNg57a2fq7X+798m9G/+LIyideO3DEAaVsNRgU1+/OAYs9hUWUTtGe0P5Z3UzYU8V1KWhCHnQW1OvolRbgSiMLTig0fO03tjfaotwd9fRF2VjJqLxAlYIHguOpyZSC2hOXdZ1/Qs8bj6kO9ceklTXJfcEQP981dZ14RzJ46fLKCQdXNu5q/mzV5HWrBKsG5wAAEABJREFUJp7Y2qDbpUpEXjpVc9FCt57JpgsmU7zuvvFb/li762/mHbWQhI18DUbxUagLQZRoK0EHmpyfCQC7xyJZ5xX4Yl9mih6DIaDUi48ssn3l1n3E/b6+mLjcTE2sJuOQNBJTU4iNdOZA/MaX9J5/Yt/K5eVYrqaakGsIue7DtDwBSSdhF50fOJR84vWDHz6l784na9fcN3H7k/UJMoguoLhLGDFkEQFkBtE/mOwZaV92+8gP3zc7Re1ssFOLAfcZ/ujgxZ5blBbuDTdbPAniGWTMtcEomCeCOdVOr0XlaSX21afSLXtJ+aHZ0qSRitF1wmJSebpw1MLyu1f0nHV8D3GNGqL5HIICKkAzzL7S7EcS6q4aLlBb9bRdSsRpx/Sc9uLqM8+3rn9w/PqHJtZubxHLy5UoibJlFkoZsvROGbYMt4TvaYp66VQbWXjjBGaTEujYKDisGVtJnNBYzbyftiLBTkRAGYYuC318olwFQdARC5I/bm2UB7MFoHSZzDydSru749cfU33/ib2nHNFNiklZh8mpLKEUadbnCcy1zuww1MtsSisbyqk6D5qXfO6NMy8+deCW1ZPX/GH87menJicyV0ShAfGQhFGrtQ9fUFZvLUybU/co4UoNeQrBlGF6bRmWeMzy0Yuv98AitOVtBOlY8CUhBY7/+MaZD2xsbNjRApnkWZzF433vWtlL8Tipd7OZTtTbCm1A6DU/Ku2e94R57mOHAlkiD4SZ1cJ22q6UxVkre9+2omf1psa1fxj/+aO1rbtb1FDawiOWdP3t6wfStKMTLj4KVw1ydgJzjkb9nRMG3hVXQJiVnl59ykOENLn12Y5oLwogx9jEg+clv79k/o/un9g60lq5pOv0F3fLJcqZg0XpCZJYt0O4XKJgMQtp0C6xCWTgtS/yPNHhMlkepTfUUEtIg6DKJ+W04lGLy5cvmfWp01r/8djkw5sbS2Ym7zqxd6g3Upk70Ql88hwLkNFAji5p3CCC95S6nATd4Cw3cgLBrstFM37tQvjzn8UqQ12aauCc/vhvTxtQuNlqeQ7W+qVscVUZNu1uDY+nRy4soz/FwytX0X0wMtDcyMKqDN8fXlefN5AsmBlPmeASpKSpGNGD2B6oRue9vO/dKGyayKo/dJZBxxLaW7GvwphIUVkuADRv7HpXnCfgsgHNqYKWishTF0npCP0bda0AsQJo25jQyNNdjn7zxORbvr9rZAI/ekrf5WfPrDUKMCGVKWuiUb7yqG/pMkYw7/nh7usfnJg7EN9w4ZyVB+tcnj3UeUvah3o4jsR04IPep4/bZgQa8NiOWo3XRfBUOyqKKaTBKAQC5sSFColy4vVJxIJrgktRrdVNWO6F90fx7up7x0fG0nI1+uEfJp4fbncl4RuT6tWap7c21+1slovukg2t2dz4yUOT1b6YUkw/+P24rdyoijmRHkJRJfzOhTIA75ObPBrXiqa/oNUUwiEbOgiiI8KiSUdhvQdqEnUZnof1Zx844zF3UghK/G5QIONFDNmwNhW7x8M1FuRXu8rRfc9MHf1P21Z86fkntzZpAiDMqQjYMZqtB46lrdl1AjaowCJACMgL4g5RiEgamZlEWSvabXY+IiWoPAkelqA3BLOLDNmQ2CXj+AFFzIXpsVXeIH8o5DsatVr6+JYGPUHpOSt4GcXC1b8fo6Hs3on0uvvHKbWfRfFGs1SBBzZMCfUeJIqDZydeC1DcsgcC/olSvVD3hcMTz47dV39+AcIWIx+nO7Kl4Hk/8JkemUSAm6JjYVXPicu7hNy5gOLkK+4abTSwpxKpBDXV09ed/OHZGoWPlMUrdUdX3z/x9NYpuphK46C/vu74+eHm1b8fh0pEI+K4BCdQhZJI7NytPKOmg6D8y/lMj+3KyQIu+D4mcoxB1u40CxuY+/UsNGeigY0Dm0bGDkISanl6Kz35sO4j5iXj9bS3AjR0eOv3dm3Z3SLnTH80Zrrp0Qly0TX5Dl45ht319Izv7LrnyVolAVWGsq1v+s7OTfvaveXMhl62tGvF8q468+QiBy+QA5k8IhXwIXfR73m4EA5tMXNFzwe42E0JTrtdO1PsS82UYDUL6EyMOTH+32d/YBlZeNoW1Ur06dMG3/69XWlZ9FSjG9dM3rN2asWS8kAFnt7ZWrOlkZSgpwsmJrPlEr3V+Lk9rVd9Y8dxi8pLh+IdY+mDG6ZqLeytRpSdhlR89g0DkNmTWS2JPDBxeA2dFm+ZHHuIXTpGRM4AExAJNzYCEdZreIhZLghD8Vh9YHQGT7LvmGvAb4hJyBOabxzeU1H2mmpKg9Untzc+d8NIXI36e+N6GymJTVyEBHp7CfHF+J72mSt7aBB3y6O16ozsBbIHNzce3JCNnqsVIN2fqGHaSK84Z+jkw7spFRHbyeScsiCjL0B5dcsLN+yJ5wIdhDvUB+FVGrImoyMB4fBH6r1VfMjhIHooiJBXZFH4il/uCoh8jd6tSKb1P/vGmQfNLn3qxn00KJPDp2yaBls4ti+tdEcfP33gC2+aQSH8x38x/C/3TTQpqxfLrCbi5HgWEh48v3T5mbNOP7aHxJlEYXNcPzTzcwCFRb0o7hb6MnOVAQd5O51lMBwT+4QI9NtJ0Wo+13czMWh68AIIDSqe7hF1ixh37kl9lMW86bHJu56t07QwOdj+7uj4RV1vPrZ62IHZQhWaBL7ynbMu/PO+Xz0++cimxliWY4gWzYz/12GV047uptkxqiQGr1qRsznRgePQiTJhpIdM1wv9h2E3CK+ELZCITge6oR0yEein9ewyeH5gfweK/4qc5KwkQUdvJXrny/pIEs4jZdsNYDaslSygk6MWlY9e3IVo32QDtYptsrPuu4Z894u+MEKa82DrlwZeh3kzCFhFNo2DOh3tnkfPXhyCAXjkKFDbX3qskKc5mjsd9haxj3g9OZVdiEynZJ7HvX8Qg8xsyyS+UhH5GrDM7uW4L3wTxM7KCx1IcvXkPInxMW7hFcMPEZCiPhPmGNlGLBbGrOXkR2vOqIzUX9jBNSv3EDBvImx3En9WLi/rLJfAaov3B4lBZ6ZBRV4yWCDCwySvqDJUVavzzuC1ZM6T3NppNXaTdajdGVCw4RzTmNA4jS/i8ka1DqWAQEcCV0HdS8h1C4tORAdbmr4A5HSgk0FmvY6hOFMQNohcu9H8B+4cfBkYeSa+NjIEM3Cm7QPtJXSeN0hu+XRmm5XEESVtgonM/18O1Anq7BVzNyNte9wpNjX3w0lhDvLMmrx0tK4VuXUZ+UCwSVOIIN5GUqCWQcQj4+07H9v39NZ6u61NKgAw7KzDeQWW3ZYvgOQGTTlyOh5c5xm9+sSWEfKVmEMPqLzqmP7B3qQ21earAhRXsbDqoCZgvEIfWGUtiWuQicWQafPFKtcHHvLk0o/qMzLcv23VyCev27JuxxRfi+p1m9WHPnd06IDZRHk2dx9n5+RaW1n6AbItnGSlqf/aZw5grV3LXTOYubbl99iswMpWPwIlX3V8xbHpoHmVL7xzwWuPHwxkIBzmmm+OMzp8DPBfX9Sb7uiriXcfhGOFFl3AN+ETwC1Fs4I6092V3LZq3zmXracJk6G+RPE6Ao8YsmvqahxHnmZlapKtjyPDz/wPiNl9Sa2ZbXlAdynJM9gTD4+35IvwmRRoMp2ak+wrpgr1ZhKZCBPppkGucK/Ilw8mpvSypGq2GAD3TbQbzbSvN8nmh420tu5tnH3Z+us/tvT1KzIZhF4P+Yy72zFQaM+JbpGPfhLcp2wiYU4TjVr66g/CLb0Abq7ePIMVK+H+6HjrU9dtLWfpmixLrNI79YbebIG0uL8S//ySpdVKfNal67bszWZUFKqUk4jY1F9N5g520RB3Rk/8g48s/u3qsa/dsJOaOvXYvs+eveDjV2/53VPjlO8crbW3DTeJd4PVSCerZT8js8lftluInGyh+ZyxqZT4S3cb9XT3vuY/v/fAd5wy9JKPPLV5uLl8TvnuLx3yy/v2XnvnnnefMuuT122lxJHcsyirstqVja2pOye+qEe+AJpdzO0zFgArn01ndic4lgglGGkB3pJqw3VkqAB+W0VYqxItUv3jmx7ft3bHFOl+BiDZ+8PtFQf1fPKt86ZamG13IheRv+SQ3lIS/fTjy4iPidxUhWbPf/3o6Gd/uu3sl8/48nkHUj6Zrs8aSE4/fuCEQ3uo9p7umBT5U2fNo2HBvBnJf64ef90/PvuB18z+1gcXjUy0ImliJAm14VZZrjQhkCFE6amUvnvz9o9cveX45dV/uWgx4c+cwdKM3vimfziIeH3342NdJRjsSd560szzXzPn4AVdf/ntjWN1uT0RZktFKeu3fmfjt6tH33zSUL3Rsmqs7FXzxaId47NjmjvYql2hLEAYdQ6lak58r13IfVWzvfvM1hqyjbHIJZAun3TkwHitpV6fp7u79mVLIRbPzd6YyObBI5g9UN6yq0Ead/NDo6uefnrhUHlWf/KxM+f9ccPkzQ+MULGjlnSfcdKMq27Z9fSW+s6R5s6xNmUaRibbm7dPZVKMsuW9g33JglnlkfHWtp1TIDeJo7/+amv7cLOUZK8O3LxqHxV+7XGDvcurtz882l2BzTsaNI6rluGiKzfO6IsPGCoNj7YqlYi7VJLis1sbBT22vfY9OAQLtcy5jiCZDJJcnVjAVpEDfIG5KMh9YOqbCupVmN+/ZcffXbtt9kDSzgK7bJmG3DYP9060X/+SwX//+4MJTyi/v2e8VS3B9z68eNdI648ba92V+OxThoR0G488N3n6ysFPLa+e9cW1v39ucnZ/ctcfx1Z+/Ck5rwt7xlrvPHnoOxctvXv12Fu/vG5mf0IG107VJmZAQPTnR/UeurB7657GQE9cKUfzh0pj9fbRh1R7uqOjllZ/+PGlvd1xf3f83lNnXfXrPZQCSZEtJcFOqscPm8Bh+ijcKeeS4lDil7OwI9yICtlOcMiKsYgpaAWZNxcynhurtTY8P7lnpH3tR5csnlOWK0SyMg25rww5wx/ftefBp0efe76eZHtrZUvViHejk+mmnQ2Cpmz5ptzth7LQcv0+kDqXpSVlSxBlXSQAmiRQRJNJvfyI3skmrtlUm0PylmuzqJJKEi2d20Vii1N8/JnxQxZ0ERhm+5WimNGXvOaY/pFam/wQ2WWrjflsS9hRIYpCUYYohZEy8C88F+TK8d3i1TIgRN8X8Eq10IC376qTu+XBmk31lRc/NXugdMHps2f0ZNuREVgT9+fOLFPystVKL/237ad+5rlqtmw2zl61pNRCEhGXyZbGa9kggvy5VINUvnIBcQQ2XQ48DJUDjgNmlv7lw0tpFvNjV226cdUIeWyqihi9emPtqtt3UYzwgdfOJtv7/u27KpV4997G1963sDaFR1/0p7ecNDh3IPnJ7/b2V6Ngh7QCDbZ8zPMwKIcWgviaKiHM2lDnlEMQsiF8EACjVzUKPiooEBMpVDMVz+9rrvjYUzXcrE0AABAASURBVJmrTNMls7suPmPuW06euXbb5Cd+sGXN5jppvVqLSPq7e29zzXMTNKt10Jzyiw/qIYE9vnZS6TsFV+u2TW7b3SD076/Gzn/JjjRklELM/c0jI+97/ZwfXbz82l/v+tIvtk+1kezsDSsGL/qLuc1mWirFY5PNb31wMUXMdzy0b/ve1sLZmcv59NkL5g6W/+OhkYkGyj0C94s7dgW5m0ixbODqjmiyWDo0RSMAITx78VHLhJ0+BIXIpkt4d6zCZDEoHjiztGhOuZHlLDMWU1z/ybfNP/UlMx57duzS/719x77WK4/o6yrD7pHWQ+sm33bC4F+/Yc6u8daukTa5wlmDZTKC0VpK4EAPArQJwT5z7oLXPj3xlV9u7+6KVbyomlYvsI9PpRd+Z+N9T41/7twDzjt1zlFLqmd++TnC/e/esnPv3sYn3j7/6tt2b9xeH5lMb1o1Umum11+8rFKGS94895ADq1/7xbado60Z2dbhmHOJyLkue6hYi0KwCSwRoA0zU8cWMLkgwR7wD3BiKEI0M1pQJVtta0qelOLsXbD2604Z+Ny7Fsqkihy9ZHskppP15tHLqz/95EEEcDJxBNfctvOeP43XW7h+V6PVwjNWzqh0Rb+8f5iAZdm88o6R9lknD1EFdzwysm1vk2ZjZDts93IzgCLAmTVQumHVyAPPTFxx4aJbHx6dqGc/GHDw0q7PvDvbxnj53PJZr5g5VkvPfPmMGx8YWbOh9spjBv76jLnPbJ687IbtQqjowI1HfZaINPXDD9V1E7ijfGVO8FFsoJ4MUpKQ9Z3joPyhXW32BjoQILRabERqJKOWGq56buKyX2yj+Vvistx2JD3jhMEXL+v56V27n906RagiNxWOHnxmggJ/ksHm3c1PnDmXZru27KjfvmrkdS8ZmDuj9P3bdlMTb1g5MKsvoRHD3U+MVUpxEJwY/csqHOqNhyfbb//qegKuaraFpXhic/26O3dWu2IKt7L38dvZPo3EuAeeGqeHhkcb779i4+v+bIBquO2xURqmeMCKultyi/fUvKuNIrATQMhheMhbkwgS9v0ATzjsFPwTvxZ9j1hAEcvWPc09o63Bvliwm0ImcEgAD6+v3fOniTgW9XpKI+F0tEV+8sXLen9y156bHhmlBINMzgiK/Ahe3n3y0KXvXdRotshido21P3jaHApLBnqTj75p7uZdjeGx9p8dXD3+sL7fPjbytkvXql2Ng2BRzb8THJFfESWhEjD1Vnrcsm4a301m7+KIFYdVyYbueHSUguB3vCoLc6nye1aPfuZLhy2cVSLXXS756S6pbqRAe8doBJ5txI4eH7AYRkTh5Y7jgOKnwX9WP2wjMblMc/tIk2L2U47tpyuzB0uCGV8mg1LUV4lqDXzDcQPkDMjpHbGkm+72VGMalJIv1SFHFgekv3ty/PzL1644pOfC0+ddeOWmB/80ft3FS849Zejcr6wvl6P/+IeDnts69aHvbaKgM5aRqKdwBmRBujxMdVelb09J6pe8ZR4NFyiG6i7TyCD61NkLeirJVKP91MaJYw7qvf6SZUcurqx6ZlIlAdvMEc6fmXWKJPrApgkCwN7uKNVZRuy0nt+hE/gJZiatJCib4z1CfuoFw4dA7lhz86qRU44dIIR9xZF9A9VY5dPUy1Zyq1QYr7cJSb543iLqHgXgO4annnt+irSVEiypUTbq4eY9DfKfRyzunsw23RZd1Yj4Trfo2X++YCEFiD+/d+zuJ8fJbsi2Uj8pq5CPPDNozdF73ZGAKRi96aHRW9/7RzKsSgJrrjxi1bMTf/nNDb/45PL7nxz/8i+23/H5Q8555Wx6/LaHt0VmICz3MaWsVEKdIpNMkpj8diPbDD/Kgq284+VnaJSCA4gnDCH3DQU2drBCK0QvYBYAggW32Up8Gubc8fmDKZ6jYefnrt9Gwd8Bs0qILrMoexKfddIMUsBdY817/zSxbTjbqhuFrzegXi3Kdq2l2JEiy0VDJcL9P26pl+W4aXg8Sx+psZUhJgvtqP45/cmJh/Y8v7e5au2khmlfXfR0cQR/tqw6Ntl+ZP1kTzlbqE2Dj3kDyeuO69+xr/3rx0dLidr8N6Nk6+7m585e8Im3zScBbN3devWnn641UW1JzQTgcw+EN1vlJGSCFmFWsrKNW4vwy8zr+IuNQpkjqF8KaZ/7ihlXfHCJ3C4+uuSazdf8Zg8Jo6RexdQ7surcMvGP0j5dMjfnEq9GbxRwybVsGaPJMZDnqEp9V7k8wUNCcJPY6q1KEg+NwkKItjojv07IpVo9cj8JlNPIJGmKi2goTraimNtoZjlzGrV94d0HkIQIrP7q2xt+cu+wClKdCgqrtULju2BcEr4+u9QnKgE8qkpoqBAA3sscZofWAq0PG1Cx0HcvXPS2V8warzV7KvGtq/b97N69G3ZO2bAN2F4veutmV7OTqxm2gEIQiIy+u6lR3rawXFC/R4ZG0xFz4bk5ZKJU2DG+egdf0daWMqF6ls3tesfJQ68+tp/As7e79OM7d1101WaCvjSwWV41Wp7lMgdWSMxujAAEm3ZnQRL3wQho4062ZsiFylnwl3Vd/OijS18pfzGHZADZbsx2y2fhT9pzhusa+KREsCjVAz971VTrcyIM39Abo4R3cwdK/IEuGa3WGm1KaN/8wPD7rthI1qx+6iBHu8gRGxzG9/ruFBa951HmqQ14cazntSN6QIYcolAaMmTrYVF8/fwD3/qKIZrYqjfM9q1QwLj/CUchMcqG1Av+ZBZX3brz769/nnxSnG3HHuykCmZBmP8mGPhteIdT93jgmA/o0vnHFHEA4eth4GI9Tb6UCsjtOAig6dq/379v4/apo5d0z51RTtTG2V77/4OOPDGk+6Vsbi7bNP2J9fWPXbX527fuorgzUkGdYp/TJmALBkHYewFMWqGB4JlL5wPCBT26NIME0yCzJiY0RGs/kZzOpQwEjUXfcPwAjWNftLBCE2RxHNgA8wwFPsq/7h4UHaAIseDhAltm9XhXLOIRZtJI5bF1kzR7c+dqgtI0GyqmggWUBg+C+oD55GANg6YUuCcVRgBgIAQ8cEbNDgNRtj0WdphyxuU5kZHlUlw4NpkFG0O9yVBfrH+YTeTEKUSe08IvKbfcA4f27hTk6B8Ei4fs/jS5o9BzekyiKmjKc/doiwIKMlyKiNQ6D438jC2OVwhskxK/iyj80RkIweeMzbIUwBx97hH2uoF9adWKAfQbggAO49WS3Ww7MoCZfVlIR0q0flc71ELeFiPSU3LZCImQokZyJ1DwcHhgtn4ii3HdZpdMxI4hUPxw5n4joAHgTJlWkRtf5n5wLwzZ0S35UJXbPoAo8ADO3bpsKIadEIUvhTA69Lnx2BhoptZH9cMTpEoVu9se5myg0yEro+cotKfh1QmH9Jh9m0MB8vElqcI9T46v3lSXc4qded3p0HJCuZjMzC+iYIMUt588gJkJsCMlYMRb6oSRhLUUI5gkBDVgLwFgDoXtpozoob8u5wTGDMWcogjeYSh8JOQFKSMN3F57bP+P/mZZFAHub5WjKkBzbWdfupbE0FuJs/npFDxiXGvWZoXBaxZWKtiV5AVt6lU0aFBXsJFkHnN4c96CRpAQxGNKwUycm1LBYWUIdqko6lohB+v+VwN/TJB5aLbqnA1u33LizEwSE83kBWxhQuX7e8pnvXzmb1aPQbecHgPeNIQA4kGK0WG9FFOz2XQT2SsSpjZXQHiwwZNoYAdMgP50b+IpuzAOFblq+JTZW7Y94cxTj16FcG/km6KC1YS+11NV2U7w8qiX+WdXKDTMbxpqRWkBQMFxwn84C8Mn/E5hrjp9gp4CI3tEeEusvOt+VwJU8vIXmXSDFafC3GcXdbvsosEvd6KrZi25brhnnMD40mHkXfcEHpCgFryhf9EyAblpBVUAiGksh5s+WIUCu7jQFxJwORsS2KllMFiDE+59OnCcUDVGrBL0FufyPyGck7MzQ4LLjNGBRnVsl5ycrA9C6MAJ3pfgf0eMd8p0DHULuYrR6QNnHHja6bWuXrZG9Z+yBCgoieh0MWzXLx+igL6cBC7CRwe/OvDrA/CbsbbHJCHAu6YTZCC8zW+FEPlZPKVIQVANBXjJhaQqTXOU27aFnjILXzFU/6NtxFZt0d9HTuTtIafbcQmZ5XFMQXcZ3ZSkECH3UXSQB4ZVuucFcIOFInencnpgsVIP4cAzctOQ312TO+2ktZ0o0/rrlhaACBN9okONGkR05wBZ1/IHTPvVXuYWiG67GvQQGJlaYIDHRngMu71mrT3p1ozWIvoRFxrfy7VIuRKrNpwg4SUaCvvmhM9psADLuw5+5KMuY9h9W9hWZRtB4etMB35PS7CQPgA8Q9NdRYubHVUOmPvijdnRsr7IcIKDAQgnG69WdDIPfLgx3v11yqPPPutJ2U7nCgNsmOO+wktTVKhXc6zesJGf1yzyPuWiipwnSIQFZBAcd1iev7Bv6jNAYzuWEXoTMwQ28Acff9FfAymMnXs9ivSbHQbAw/tFTDN1qZygMScthlQgYE42IfAqWATGBXC2D+Y/HoOiyOES5hTWYbTGRe0DQDD5IEdqxCJIRUMPYy5vxVRlybDGAh6LjJrwF2xpOqHdduuL1L4RZpmUm9oMDggmeuSsVq2RdjXkexaosZTGcaVEJfTBtxCrPWjNWgsOlSoJtxY1F0EIxlpZ0pxZNgf8AzdYTpiM2aQYOpP32G4YZf7zbQR8hTIZGkSXpZXvvVr10axRv5WtthyeO5jo3K8RwHh/2tsdC9tjYz+8a3x0qE4pi3nIgkp/j1u4mGTr15u7x9qV7MVNC4OiQHvUQiKna4x5ml6OzOgecWqHNmvj0yUCDOU/5okCvN4YuaDTVv6evQBvEt1K0aE/sBSZugB8BoF1SjK6nr704OqP/2Zpt5woB0a1QhLMdcSvIwQTHoKhfE1s90jz7V9Z98zzU2Y9C/gc9q0THGMsbrK7IfyyiUTDBCdgjjMa5FSFEWuW9YybM0KoB0bmRiEAbTrI3HEOCmzD4OSLYW0g38hdMqdrsK/cSlH9/qf+FdAoxJycTZuL3J+Aflb9xTHliNIFsyoLZ8kfQBJM5zSP1Y9Eg9U2lqYKVhuiL2odUCmzNkMDcHxARqVwNas7kVC/Tw9+RsDFnqZuh49B750jDb0J2KocbMjOIIJpArUuZdugVJNfPbjvjof20Qx4s6V+6tr82cqZHiJnPf9uVIz/UYXVSumnd+3+7Zrx/u64bUGEQa7z78ACnqB2xwEXKFo2IZoUhqYVzKBLM0DeVNuCK73We8aBMD7GGxtaa+KY58nAcp4/ZM55Xlf3i391jkTm1OVSQBTnf3PDfz420tOd7S+tOeI14jUEpvOKOggoAI1d5JCpwn/73Z4PXbUpSbgM0XLcMFnz3YAeFo0ljc1oEWkLdvqnZK7ySboIesjMFCVi6iQb5vYCKNyLShzArDZapLM9djvpAAALSElEQVQdwpBYfV2wehGsPTFSst/XSLLg651fX3f346M9laTZdrXZeWwQ3om9FRxgKqdKSPdv+P3wB67cqJY4ILLJY2ufwg9t0K8YPAvjl2158CCA4Q+gpzIgeIAfcR7ZJ10VphVdGTBqbCkE7iyZnYRBhKlPp4ciufKPS5xUNXuPVYhzL19/z+pMBuq1A+EnQVH4DtYCJydXEkXcJ0C78f7hC67cWJHc10uUWNpRprjNu8UeB51w3HXWI8z9r5MrgtEhBHeiaMdz5nZkKQcvmwxOI4L+okeEsDz0BesppRWJntXIFlY2UxyttdupflvPSlbKIKLhEsng3jVaBuBNJAlhTJ7rGh/IKwJbLeJ+ctMfht9/xcausua+v24he0+EyFDvMysYF2wW0tm8nRhz8AkB7qHtpO4v5PWdxTPoBCA8UHOfiN4cPGM5+4bcMAuy3h7OKCuSs4wD3fHJR/T2V7JfPwRmB1YG5CfPvczJQAQGyfsBwnXW3M10vzu55cF977tiQznbiD17ZUMw7kdyQe6MavzKI3oHq9nLT2rK01YNnVycxWfWO0aCvSJpRmFnbOVVYIgkJaiXpVirAGMqLNhF5ONAn/u2LltaPw4erUaNsl9lq7X/4vjBr55/4NBA6dkttTO/tHbPeKsUQzDNTCXV79395OJlLzuyTy74BY7eEFKj6QHF/Upy+6p9531jQ6J+oC+126tpLW2003kDpX/7u2VL53fvGWlccs2WG1aNUIDkllG6OnnfzVoQ4ZML5lb+IQioNGyShSMmQnmPZZ/0KFwt9gn9qCOGwZNiouY+J0aVV7/Rc8CM0lcy7ifjtdbBB1Zfsrw6mW1qzkAWrR1AC8U7Llt33xNj2icX5UNBcJXS3L/j4X3v+SbjvjBQKusn3J+cwpce1LN0fnVsskWqcOl7FhJh8jdSWRsITiNtA55ZO8hgL0uBTb4w6Naghjo40lJQK+BtZITcznQRbw0SWG7KEmADXbde0fHFzppqMIPsZxzS5fO7Zg0kk9mPZWSxT8wwlCu1kkH2g3ipOOdr6+7/07j2ByI80Ak7m5GnYnc+OvKeb2yI5J7dOvNjK+VNSLEQGZNTbSJp+bwuuQ+LcADqsvHgtENwsAPWX/tpYwaEXAzETUYYHwABOJnWBWo22rGbKJi8EnoBgTAozyIKRBtL+P2OCoNHJnLl3ygxR7EpZehIBg886cmA6aT+UNz/7WOj7/76esgWVyncB59eg6bCGq8XCJg+glExM7vLwVbYURj6tHNes8p0YsgmwR0/ItYXH6ww6B547TnxI3vAjoiEXRsBeZLAdoSrO2vdEih9Dw2SKX1Wb6Vnf3XdqqfGqxKLwCMzK69inv98fPRdX1+Hhvs6D8KVFRBDgnhNYfdyh8mIg6XajnWRAwfjD9ppPylOsEwSWgCB5MBZijBT6OYaOFgEyDENHGw5EoMGDAdQhIlav5RLvcqlQZQ+q7VSSqU99HSIRWBiHhq+vfPydURsOVbvphlTUqX0VCiLae3oTjDDEIJhPPj0dTrs1LdTPecwXA6ZccRos/1FXat1XiIQ+ZSQwho70+L6AEJ4iWv/DEK9cLfR/w5OMczaCzs1omQwKWXwyDPaDoTlfiW5ezVxf30qQO6QYtp1UkIGnhY5kRNscc+QymXgk5q/4BaeWNTKoxPmcdP/jW8hhHlnRyq6mob29MT1x3YD0ExaBA0DUyXbQY47jBDNEe6LtZc3AtYymGimZ3113aPPTWRxkfzNHTq5d80Ycb8tss2x2m3hEvMY0CB4QgryDEUTyPl08Q9TD6/AsEJTDx3NBVxHFSWR0EscwdcEPSssH0HjPpBNDvKmDfgEyMypEiA8bXNHG9HhHUfYQPXkbSWDsXp61qVrH3tuore7RH/3rBk797J1bfkzqa3U307Z4qFgqwV0lg/C9SvoE2j57lL/HaxB3XHLFdApkwiUUK8tA1M+EblcFlhWKHmCcHNaoAXiBjUSuMCaoKnbsFK49QfGjtD8iqRc6gwrDun98T17B3ri7KelMLCKHGmyCzRBNj6VvuOy9R9+wxyad/zmTTvbcku/drYL4DSo7aomEibq6QmH97mbiG3kdqNbMz3SN/xqkVmJHSKaeUDeHup63EIHk4dPDBPBVsI8kL6ohKKfcIxGxnU+/SY8+tDWnZ0Sg3aNtrI9teMsJ9Fots87ddbqDbV//d1eRRaySBmKlS07aAixtda+8MqNdE7Cy2L5ugV+xcIQgznLaNz3odPnnHPyzKlmW70JOzGV0mxlEtt0mlE3D1ELOK9vmZljo0JKRdEgiO6SYp8VL50mOj2mgxtfdO6cKT3rpUth2AeAQX0wGJdlK6Vow86p57bVj15WrctdI4mV3/rA4vNfPbR9uBVFYfp9mgPkSzh00m6HD3Eq7BVhjJgMb+HsMhHQlD8fJneziJ/YOEmEqT2LGJv5ga4KCO4ay9CqrTVWhzqaDQZEkPHTbFkmjD67SkIzy8mEASJLFjsGMBRG1EiE2eadIxPZBmVfWdbbyn7nNHN6lJI87pBevU91aEb/zYeGCsSpRqpcgXyFJLrut7vJCGaWw42y7HOWeQyI0HEKhbDKyJPSwlqjhSfB4+9EOMmCEhrPl5uhOBQMX/QeUSyR5+OQ7CoK5FqYvfg50JP86K7hVx8z8OrjBidqTTl5C/VG+4Xr/v/7IVMoIH+TCcmN3/zA3h/fPTzYk7Q9v2zxTJiO2u4KT93QAYKxDfRSeAaMhe/jMwWQWxXwJKMIOM1Mwfgm8KYU3MhD5EDbdQEsIBLkZhvJxOLbH1j0uuNnyN8DQKZ34Hev0wH/t2X0RQn9WQ7iV/cNf+iqzRREJZHaN4FBjRD65U+wvbeOWrC4wkGQ/REJ1jj4LBLC+VM0e0U4cEHIJ6GFcNIxiCaA1WNBTUsZAkNh0squkMpnv+DYTM9cOYM84aEHVuQGtUIIbkL/vUdYM0VBT26qXXfX8K8e3EeTZS5tx3qj6Tfz5Z5EXZyC7uUZX4eZZxABjgh9S3ABGF/pvjKvoiqAoPng3FNeFseAcMGrHuhEMiMwMtFOIjF3sNRfCfdMcTS+wKNQdkYZrGJYamkibMe+FuH/YDV7jzN1fEZvUgRtcjm3HEi5NlNSCLDvShviwXMSIPiiOlWj3brYLMywVsN9gVrOBjnxBd1muh64ap05RDd8VK+cz+jNOr93or17rCXyBzg6Av3Llwz5Ljz0BAi4kgFOXzWWayaEiVFM4lPLzbDFpi/B76bDAN0M12BhH0Rwzwo9EWAyU9niXD7/YOlmIZQLjkTOQXAG2PEECrfpqcnZgnDrXsDSqjtPmcsS/6UjLGLwNNzPPwg5G/Xuakbpl1iFf10I9ozHO1e5owpdcyDcqNMrGaT5HSoItC9oaGNBvmrFoREfoCIWw4IbPfJEggFHUwszYlcLoq+xRkmEV8IuazRBhh2EuMednWmi1QXkv7QGIhWWKsHZ4R0WuG0Zg/juEjqeWMPnMs9rNjD/Ii9GNrZFAflVg4oE1QvhdVMRACZHzRRB8Qct37TNmt0EzRQT8y2m/4hu1iLgBvBOIy+lgBgsF7SwLeqxOQk0M6a2A4wSnsDhJKDMNYJxh2h74AOc8K8xYvUfcHC3ZIDbNREs8IlQCla3FUGGp35JpvHWYsyYJFhegcyvs0fMHd2AwjGwCSKbrQY+KDLCdiquwRzM+N4DQxBcTNoUlX0AY5NJvQhudTya9M0URajyguGSoh1tIU8WibDQLIRnbgHjPZEEbYsObZs4Fr1pY8GByrarq3SDGpsvNHavlwYA44tgzoE3BfxdCt4mhwcECFyFUynGb5ZnMWTklV34BhGwy/IKwZ3r8v8HAAD//4fpas0AAAAGSURBVAMAKwJmtUp5HB0AAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;BiliBili 字幕提取器&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFsElEQVR4nNSaa0xcRRTH/3P3LvsoLVRrrTZ9WEoFfLSGohBfhcQmWmutTZvYaNS0pCE1sRg18Rv9pKIp8VnbpIlRY/qItjU+kjYRbGoAARO1KTSiUgmBvgQKLMuye6dzBrZQuOyd2V1o+SUky947d/5n7pkzZ86siSRQUMp9g8GexwBeaIFnia+WMmA255hJ1xlDDwc6xcdmA6xJfFPp9s48Xl3B+pEgDHHyUEnX7ADj6xhn68D5aiHQr9NedBwQlh3jjB/1c3b05O70TsSBtgG5ZdyPc5dfBbfeEKJnIgkIET1gRjlunbWroYwFNNuqsfEgd/1d2b2FcV4mhN+GSUCIaeeMlWUUpu07tIlFFNs4U1AamD/QHzoifHwlpgRW7/GlPF1d4W9zvNPphtzt3Q8gYh2erFGfCHobcBnrGz5Oq411nxHrYl5J93OI8KqpFk/IPkXfUkMMJnwD1DDCrS9wA+BixvN1u9O+tLtma8CQ29DIcy9uABhYUFixys6dxhlAEzbUP1AXy23y7jSx/sEU5Cxy4ZZ0Az39HK3nLfz5bxgHqwbQ0cmRbGhOpPg8eWMn9jUGyFD5U3eNU7RZvsSFPaWpcJvjX2A4wvFtdQjvHuhHKIwkw+ozitLyR4dY1+jL3jmlxUL8NqfHnBMj7PMwrFhqjrtmGAzZC03cn2Xi5z8GEQwhmdze2TLQ1l7/dsPV/qIfaIWlRQqKfHZsAKHBiV3l3iUmyotnINmQRpkNDDMSRkV6oBMuewIcdWdi+0juMhObizwinCNpSI2UygwjnZgSs37Oz+rmNiVrvdj6hHOgsiyOzl6Ojv8t1DSGcUK41qkWpUzBFsqdfIwtogRQOjFlleD6idmly5bSfTQvbp5FfwbuWmxiy+NeYUAYHx0JOr5FO2igpWbhyfLlypQ4DmZ4487Gcbcw5NMdqdj5gh8ppn77qGaDNiOUzyMO7pjnQqI8mZ+Cfa+lIj1VczCEZtJu0E5KdzNCeNxAfk4cQ2dDziITFSUztN4EaSbtBm0DEQc7NvikTycLCrtvbvZBD15oDO9htcjNNLHpUQ+SzVMFHmGIuluSdoNxZEKT4jXxieecwqmF5rYILnbbR7DSDVpvQeQCDOnQyL0y5xsimXNDh9Nnwzh0IiTjf1fvSGde8ZicxS5sfMSDwvvccLuYdKXF8wy0dDiHaKp8mFwz/j98j7r4viDHW18F8GPdoO31oPj6t78i4i+A+XMMvLPVj2wxoVfnpmDv90HH55N27VlIqbQK57ssvFjeM6H4sbRdtPDSe734oTaEFRnq88CgohM0oJFyIhjiKP2kD/+0q63UUQbForzz84CYH2o+TdqN4YqZMjcphM493wXR1BpfrhMWNu/6Wq1gR9pJTTM0sBwGlVxnf+UAEmH0RHeg2RiqVapzoSu2BccbQpOwE7OHtBtUaNVp1NEZ24BfTk2RegmrNKhKLAutitScji2w7ZLexI0X0kzaDVniFlVi1YZVv8cOi7RTmxKEZtIuQwqVuFXbtV6wUNs4sRFz0+PfI+gQ1SwNoPq8LHEr8v7hoMxr7FgwN/E9ghOklTTTZ2mAPFyg+rwiZ0SM319pXy9ZuSw5e4SYCK3RA5GRVUkcLsiKsCIVYrH5tWm8K60VO6zUSSxISo1Ca/T/qwbQyQgdLkCRiAg2r+8NjDPCL/bJzxYlf68QhTSOPsW5Ji+gkxEq30GRXlETffnDPrnyjp4TxWu8sjKXfERpUWoc9c3YW1SKu3ZkLXDhlWdI+FC63d1nYfsHfWj8L/76zxihzsXdKImU1xfONbBquRv52abcMx8Q1epvTiZWINUqr0eZLgccE+bG1IAaSuuvE9R3LPFD9zgwrQ/5CHoATR6d6JQ4rJ76dBJPKO2JaebTyYhIoLbpLHa6yGeLPqgvlTPi4TZ6TNufGoxl2v7Yw47r+XObKwAAAP//FqDAzAAAAAZJREFUAwCSrnOIlbwTDAAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;Billfish - 免费素材管理工具V4.0&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAMMElEQVR4nMRZCZBUxRn+u/vNufewHHLfoGiMClhEYxCISjQYtNaACtFIaUWNpZVSkSAOiljGeMRoyhjLShCNYSMRjyQCJZQaWVcUNLK4Gg6BXXZZZpm95nyvO3/367cz7M61HNJVc7zufn9///13N4UT3EQQqPxkHBNARBUw/EvgBLUTRkhIWvJLfQMsvrCsYly5OdwA6reSNN6ZjLW1NsX3B+sgoeYGcWoQOBxnOyEMSMlq4PTzhYHz/V4yb4CfnI/kJ2BfCY5EKBGtbXGoCUXNV99pDG+4ez10BVFTweNkos8MSOktR+k9oJ+rdwC5phqsNbMqys4eBvcOrzDu9HqoD2EJzgXhwl6EUgIEDcs0RaIlYm7Y1siXXv56ePuaNcCq6mytqRYEQSDt+UQxEEQMD+BXutptiwHx76rSwPcGe1aX+OhsBMhNBK8GBFD5S4T8q1aT4IjbTWg0Zu0+2CnmjflT6OM0Ddp08RmWF2ZihTBARJq93jUNfGMqSoYVcVJmGKb1YRMPL5lSfN/QCrYoHhMWUpSYaTZiQuITwL0uwjqiVv3L9YmFLoNHmEV9Mc6jsSgP3fV+pAnseQpfOnN9ZYAI7Zhb5pWPLPOx6wYWkxkuRiZwDgNxjQRS6PQapAJxG8ImWJBWka5gFEgsKQ6jwrwciIcK0kEpbz7YJTaiv6yesiq0FadyR9N9ZUCOKcesvb5i/umVrpXFPjIcewS3tG0rURNIciHgWPwJNeGiBHHbNkYlPYIPSDSe4OF97XzVpv8lHrplc8fhbEyQHMSVXYZur7y/zEcfRAlDAu0bHRFXk4YC3Yol5NiimTSnDHJV0nChETIXoV0R/lbNvtgNs/7REcrEROaEE1TOJ2quq7i+xEMfkBRRyhalSkgMx+SvZJAcK3jZ0mmkfWTAokm0qVhcWEV+esXpg1zPgK2gXpqmGaSiHHbheN+QseX0IZdBmCnAksDhW2zU1jFNJISo9BtXf7ko8DOFr4fGemsgaHP4y6m+Rf2KjZFxEyX/LYN3GlURGLjbRVz93HAjdrl1RCJpc1LNkX7VaCgbE2CXAdEx+RQ2mUswaIDfbUzadG35GaovmIUBR/qXji0e5iJkvGWJgsPiyWrSa9EfhNuAQCmjU1TnjiwMVOsBlxsLMCHK+xYcJatIjuYpNguZ07NhrDIMAiYXA9RzVWroKAbqJtkhyrAf+1Bk6ZQR7wSItuNfC7ICTERwThtSN6FQJpxMzJiw8VZDZgbO0Bpo6RJt6D4hRgopq+QcrqRKJs4EcvYcAC8WoFbS1r/TdPggI6cA+e5crFEH4JyErZE8TeY46QcxTg6pjjQNdEcXWdre9gfg6+YUDZwxyruyxE3OF5AvzmvwMsbOWQHG3IeBTb4GSP/RIHZ9gBrpSpkLaoVNvw3YvN8DmzIP6IjzQOzeAtDRIjMWZJOU44MyIvkNMbRqnOvTocviB2SuWr4ZyxHNIbkYH4LTy8vnT/T8bUAZu1KWw+JoGWagjqNmAtjMO4HNulNLEx1/0ETgez8BaPgMHcqPc+IA5YPBuOo3QEoHKPMhgeFABo4HXrcevTSqGc0qJlmT8VIfO63SR2csmODbUvlUtEEyQR05yt/5Y+nSUi+dGcOqkucFjwsmospk2CV3p7Th/EpQ3RRsDShGnGduAZ0wHdjlSxG8YZdsuZVNYwlhejxsTKAYnqsaC/1lyO/ev25dWHnxiDJ2e9JSZGjO8KnAdwEZfCYYP1mJUvamwCNoXrcBxJ4aW/oSuIEmEm4E/vErKc1JbaFY2bQbgH5/ETIXyycyOcziccEr/ezcZy/t/3PZ1+1BpR7+U4+belD0Vk67V2aDi1UMxa3U40AqhmjwkhpWeoe+Buv1JSBkNJJmIYStX7Rz64MXwNq6RpuafEeod4zLFgM54xLbZ3I4dbdQEYNBxYILh0MFk46wYppvyMyRnl97GB2gbYdkJSGDMnWh5FcAO3O2MgW1qCxTEbT5yq3A932K2y5fijHNHCQTIBo+B4IOTFAANmf4MTzYNxm4dOq2xpxOrSEQ3EuUTh3k36jYHRpwD0KbGSkzL0Ae6aNts2kLgE29VkcgavdbJvB/PgyifnNv8LIJGygc3gPWa/eCCDdoads+QzFyGdIf/BU5c4TUAm6mOG6ivASsibYTW9yHIIo4QJ7cYjsaGXdRCpSO7/y/b4P1/vNYbnmz5w7pD55iEHtrwdrweDciZ1E6/iIgGK2EmcjpD0ImNpQ4MlKmGLAYGgJyRRyMWZvOuFJ63V3aLIefAzDmAtRQPPvi6lgCx0v6A504Q6OBbm2J5q9BdIbQPgzICUSWaDKuEhFVDCSjtBlt6huD5mNBqJAnnVEc3Kljt60FGdeNqx4BCAzTTNDezEug+GGz7gJ61hVpzo90kjGw3nlU+4C7d+GfQiBPPGg8iRtpoA1qlVvebduH6tipD/2yM6DtWDR9CeY6tNdoOAVU2vGQs8C4cgWaSRGqtUcpQZSkgF5wE7CL7+gF0HznMWWGkMl/enBg4JIJS4S/OJyoo/qsMnkowqu5qUIeEbm0gMSJG+24fhOYbz6oo5AGilKgMrH98FepEKrAUyVhirUS+9FSbfLaf2Te+PQ1sDY/oyUPOZvc4FC7Mn1r3tudOylWdord5R+FqjuTYr3HrbbtPC8ZDHW85i9gvfdcqlvzwS68CX3iXAVaMSK1UVwJdPZ9WNCU2c6sjiEY1kM1YK1bhqHFSplklobJmnsYYW0Rq2Vrk/mE7FMbZWnCL30OXfvDyXtjcf6VxwVMiDy+oKROMZo8AfzLjbaUUQMynMpqlARG4H9dbUpwGB7JoNP16xr8kQYw1y7GkHrAjv05TEfqy82A4j7Fao3Ckkuqw9tTtZD0aXw488/h7XgWswA30l/JQ6ecTEgQMlpEwmCtxcz7zSf2M35Eyy7gB7bbJYYEL8G1NwPfudF+FwOBiHWA+cb9mPTwPXdRXvAy28SSvLO5i98z+vnDLyrcQR05uyfiQSu5BqwdN5bNGFXuXosncGWY20Tuusi2b1I5CmuamxG0B/hHL4PAbAyGE01k8abNaMp8FbH49nWYeT9E4eU2G8cf8ZyIbGtOLp686sijDk7Zb6RPXq5Pid/bnzwypMTldhvELllyJTcpOQQtWvehJu4BR8K2SYgUDCw/oCsEfOOT9jMCJ5LB/DsmdTiMB1UEHTfWc+woBpwdmd/LvIQSX8F7YsecVA2jAfeK4xI0znHnmpMFPwYqvfXq13PwqGxTpffEsRjvxFfCVCfegpoqK7j+ZK0lCpiT6SXcUmKIxyO7JtWTbU8sLxfkT6idNqJAv6Y0f3Fx0pt96Etwn4KlLOxXfZNSmI5iwAmpS2o7QvEE1OnRU8qA1BkGE+hI8oaXtyVqVWcwCwOqLbetfm8bX4VH3FEMp3lywslt6kgFUcY5efV3X3Q1q1NzyMEA0dyd91JoUyQBLxpMBVF+KpjANU0P3uQcbDdrX6iNPG0DPHoOzfyeXTdv/Cq+rDNivSGJYLiX225LiO5dgLNZPK5bxjRazvWTkCWDXAvLGiMc4Q3/2mPeFvy4q0kd+/cwaZKDsFLVmz8uqfzBaPdzPjebi+U2NTGzWSINuL7sIIUF3N7ghT4VIfbFibwbwCN9RbWhLfnZ2nrz5jveba9V4DNc+uXef+lbmse+M7Do6mnm3IF++AXWUpPRL1yGyy5BLVMIWQI5ZxJQKHhh32S6md6B2yUkweP8ZGdc1O9qN1f/dUd81VOfRA4GcTSYRdN5FxSQuoF/enag9IJKa7KJmz98PE0CL3azlnEBei2e4U/DyGXKA4N8NKWJyMIMwXbtaLF+ixrtwJX64btthgF1q+uP/OfJLdCavnY2WgVJTBEK9r63ddS6c1HleaNK4VWPi42VFyKZzCrNXLjLAIbMm40d1rIRfww9knFNeV4VzH/p3Se7dRhR5/POAWudYszcfVO/qXgF+6LfxybhDb0wLW0mUuA2M4xRIjBBEgwMrY1RvnLC861PIlDYvBno9FuRvMywMkkFC7+t77PjZWRM+8q6Of7BU4f5FpS66c1o2iPxUoISVRAKkcRtQiTB25KC/H1bU/JZVc/3uKE/lnZCGIA0JuT/mut8Q4td3nOwgB4mBA0QwuPo+I21B5KfLVrf+UXafPUXjqP9HwAA//8GTJsDAAAABklEQVQDACKHnpfZiqCtAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;codebox-AI下载文章&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAQAElEQVR4nNRaC5ScZXl+vv82MzszO3tJsrsh94SLXCwx3EQNpBVbC9bqES9Yq2BVpOeUWlFrrZbTHix3ajmooMApIJfkVE/Fyh0aiQQhEHJdNsludrO72WR3dmZ2bv/9+/p8/yQQkQJCwjn9Nt/+szPz///zvt/zPu/7fn8M/D8fFt6Gced//vxdAzPtZ2Ud43RHTC2ti96CF5m2Kztj2842RFgaL43/eoNZuvXJgll7+uqrB2pv9NoCR2jcccdl2d7eVZ/K57o+Z9rGaUIoO207cMN98OP9qLkT2DM1jVH5YfhiKdL+LpT8LqSqD+00Kz9fPRZ85Mf3XvmV4de7zxEx4N/v/dhHT5h3weXduaNP0rcwTUcCoYQcQTabRzqzGEoFCL0XUJwZwSMjx0C6e9Rk7mLhe7Di6n7UyzPFuDn8PTXz4HVrbrjBxdthwGXXfCDb0yNuOGXxZV+YVejjOzKSsgFTDcIxd8LJnox09j0wDYd3NiBjRSNG8NhoDc83z1Rms4xQdSLwAb8B262WEU0/+1SlOP6Fx26+aPsr76eU4lUO07j0iit6Zs2u3j+77cQvWP4e6dU3RoE3BBWsB+JHUArK8FSEenMCM7W1cBuPoj0vOQtozxCtFcFIZyAsBcNUMG2EVroQqvyKM8380Y+d9pk7/vDV7ntYDPj8V77SlW9/8mdO3l2Vc8pRMLNWCiUJfhOqlQ3YM0Hwvg8/eg6B8Qgq0XZsHH0U+0v/BSvbjqW5pio44zDa0hCmSFBp1wrTgOGkQ5vRlM7P+empH/3GysNuwNmXP2EVukf/I9c5/G4DZlQMtyBoy8DDKNyUi7itG53dJ+Go/ALk/DH0ZCuYu/A4GKdcj62FP8XjgcTmzrORmTUfKbvlfU1sKQ6gM2wakgrtTKFgZJbefeYHP7H00Pu/ZRld6K37WvuSLecZIhNbvKHdHqKc2YaqeB4IHPRmz0DfrL9EWu1HRsRItTmIU31YhgBBejYqpLLfBmRDRVq1PK9oAfkNyaNUfMOIGTcqNNKzj2oai360YsUX//i5524JBaXtLa3AM1tvOTWXeepbThYqnRbKJH+VMhm6DUxPhaiMdaIQvwO22YCcsw2peV1QmbnowlYco56gEYOYjyLaTRqeoVo5nIbQ0QnJJYgjvoz4i/+kEjAMEcHpXVVOhX+FN7MCG9TNdu/0vpUpW56XDtzlP1gzfIKdGs1aphMZDEIptOdiRG4bct4ZOPHYlZg16zRk2y24zhbQNBhiMZlRoKsbaMOTaqGaQSRPRB3Hojg9DFUMERmrEvBxGPPoI6QsxVEMJWmGacG2839fOOnce2e2/Hf5DRswNvXd88T06Lfs6foZ1p46BgdS6N8zgjnzmnEk21D3qRx6+elBI+OjZ1kII5UiJbRhu5FBJ73FdIAsZ55ftPm+haI4FV1iM/K7H0E8XEUUnow4t4pHiSgIEQcewQc8hlzZkB6S5JO9IAvrghngptc1YO/ea48TTv1qc7r0IbGtCTUewWLgPTvJ07MvKsMyKOYBHMeA7zloROQtQoyZj6Mm1qNsnIB00I1jFjR5tXmc5EsiM0q5SKPhDmFr6Vjscv4EjUUdcIsCwQyv4EaIfJdGNAjeF3HYhAxd5o5IaVwk2qeB83/4mgaMT15zoYmZa8SWarfaxAs0PBhhiHrDxLb6BJw83R7bKmYACjrXyYQiikkUvvYaaWQyJhqpEeRneRBiFmL4hB8QAEMXvJ60MdFYislagSvYiTorIK+pEBB86FHBvBqNqIooqNMIPRlLnPqGNGB596Kho/9PA/YWr/4XK5z5R2MdT9xRZyVA68tMkdUIu10D0/kS5kgLjFsGGHmfBJpUim8EniOCItWm4sC0THSlFOpOwJVvqhymUYs7MBqejikvixF1MqZ52ZmiQqOq4NUiZmGPRpBOHsH7vL9f42wgDPWK0LDQj5WS6djzTn9VA/buv/paW9a+qtY1EvDSI3X28uQ66xcyYFvIokyEKhUYKuXaUJbHSoeiRx1tM1nypEMVNgzEZNdMfwr1SQtjy3w0lpSQCyoYGu/ChMqTYu9AqQwUp2hASaFZIfgawTcrBF8RoVdF6NMQGhAmVGoSPB0ZeaRSyHAIT/odAwYnrrvSsWe+qjYS9E5+OaQCjDGQCN4nuFq+7endbX1DfrT7k8IgbC+FqE0mrBSUPl3fgIoRC9IlS6+TW/uzPupMSNUxExOD70Y1+yk6YhYadQMzZFO1IlGvhHDrDXq/QvpUCZ70IW2ihEYt+kQvTW2INkIu+i0Dnp+659ttYvs3VMmD2kTgrBjlFBNOkxJmCTht6TsH28wv3b+h/PneXvOCUtiIHUMySBWskB4nM+u6+uTRZp2jzWo4CpGgNJYE9o7aGPE+CbTPIb8Bl7NZj9Gk191GLfF8Ap7ApaaM9jrBawMSY3z9d/Mlg6T08y8ZsL58/9nt/qZ/dtI+5DCBNwIIjzJWI3idYbPpu+fPGBcuunVN3HP8B9sL6SyaRX5wlA5Mm55i4qVkwoxhsRywbKqSrmvIaTvjwpABJicuoCothaLHta4HHusjr0G+1xPgQQKs2QJK1YkPgtYBnBjBz0ihOHCT1yqMRGLATvXL1NjU4PVkJQOR3CoGpAF119XJg/WJbQ6kHeNLYs2aWH+faalUdbtRK+dJkxK0rkXUGJPeTn5YyOkWwOEUhomKjoF9l8JLX8ygnkEc+8ywgQ7GxMssW0XiWc3vBGCzZQBnizL1BLQ6+DmxhUFAbIGbGLB9onhuQUwut+nBWBtAqaQe8susKJldGZw3zvn+mvrB1Yrcxni92YGpap/IlEpKBKztSZN6NY0gMAncZ6WzFHbbbOScp0gPgen66TCivZQqApGRTkpJYtKZNplaXXiUmttabQ7ofmJURGOS6SVGBZRYizEWWXI8MWA/Ji+aq3TTQ9oQiEjrG7S8z+CkGea6Q2MldBuDbqrmTVSOcgq5wdi0SIOxLIZmPkMez6OXQyBzFESqA7Z8P+bPuZLMehT+5AJIazZX2RZMSFwJOkiDZkDISHvYT45RYhzB6veZJCVBh0GLXgFbtqwzjd6eGnYNG9utR/fdtmRjvHuVaQSJAXQnVC/Bs/kwqDp8FfJ2jUMN6MotHPRkdahe946frnTGqcw+BuRczL6gaNk0vrFtjmyOFJVXbCjP78Zo5cNcDR8i+B+KwRK6aD4Vy2Me3gsvTBEsywpSKoyo0bKZ5BRdPsiYM6jyvGFCK/F1hDzzSU9H3ajVSMTQedaqSO/MChptHhVHyCDRV7GQVyhQQ/yYtTja+BZ7W+w6aMCuXQ/4p5117todI9PHj00t5Hku5uSmoIZ3IvORdlF475CpymmEE3nlD7FkGPBR25NXUT2rjOaeBGjK4veNKTb5i/g36SrjhCIiniTV9tOQFAPfQ8HYyUZnPzxTV6vsDawY1XpsFMt2f+jmN1nNhlxRz7r0hY93cCpdBrYzIM+k739BCjEwZdP8HHH/7NBVMGVwnwrrF/t+RgxPnaiq1X2YP+Ep/8kOIXRrU6D6LCoKZ4kQuVU2Otiou2OOqg9klN9fVbXhNnhTS5h6GVomxdcKkLfH0JHajNikIZQKxf7BJcVcliq6AlKspuu1ICmvPd8hnmFP3LL5toc3dv/qnD4u7BcZGIauHtlAGLpG+A1PfFgiKBss+HMXLf7BfbcfakOua8Hj6XzPSjPVHso4g/lnKGPxytgUKRuZsxzGAGU0TMp76GJJUWIlj7pMdpl5a7tj5W6dUsZuX9kTVWXWmXkj5g/DIGCJCtvQgBEopMEjyy7mG5ZBZhQY9UYtu9z3ZwatsJmbLbtD7KD3X6AB76Z5Hk/WVuJ0omS35DwcI9zX/OHuL33cW3zz6nsOGMDgNa9g8nmfrYtoFar6foe1PXNDiUq2XiG90k6KTwobKUJ5JbhYU4XxpfIRMstDYa3IiEDnkKmcag6ysH2xobAzVNFwqOIq7Y5ojC54uQQRjZCs47x66hYNPvHieedffMlE1ws9M1zGAeVjIVdiLtFrXWfHBtHHPLCIjUgUmaqoPnLpye/Kfef973nmql8/5zPtDxq5/FImpJONBKNE9/GWYbC3jcss8Jr03gJaqjTwKLlqRPCslBAysDzKdUCVCWQIv435eh418A9M4Z4Bwz9FiHgZJSVL4C4N4IqpmjL9RmazW2j7LJpNrToQP/rplrXPHH3rysnZL6BEWeuhAZdQfVaQhSGTUNKk6hKenpA7BaLfOAhGsjvsoO17kVL33O7udW9ZO/5UuaaWO6l09M4LO8zcbIsLwt5Dlxgst6x3sczwZStQtSGcQWJEC3xIx4VSvyZl9IYXfzSNldClLu9dJ/hxdskbhYgs+9up5c1/m/o4krxkfvazXz9tb9k8tdS3Hr7hYZxU2siZ4wWWMGhszV19FfJX9LBMOIENzTK3Oyx458axccHpZmfv8nk928umONUUpm320eSCFHFS0LEDGGPGdbiec1k6UBp9AvcJ1KfC+MojXV141HtXH/lexM+T/KB7DJ8x5GmUTKazed0VLGlOUiu5S/b5zAfEe53j7A3i/rWbP/3Mls67dhx/G0aPWc0Sl5HOyV4EH6YSfMKwsJgrwUuwKBMvNVQeV8Rr2AgmGKx70ywrnHiqLMwHmHDWhzU4emdBm07uxjEN/yOeS9EJXRZ2pE/ibXrdZ1kRcCU0tRQrWUPvp0gkwZ7sDenei/1CzH4h3s05lMxSPC2/Hp6In1iFbPC4YzaKhac/NqvcmEb16F9QiWJUnBi32x7W2xYNMfF+XmeB3nNiQNZ8AxWWwtxhZiltIV7KGdtmF7V7/qDEE5uYDHVOkjKZUcgVeJBGfIg7DXNJH5d0UX4ydUDrHQi9laIdo/S+kN6NmCboEfJ/gOcTtJzgTLZd1GOmgy+HL2AnNhzYG73x7g03bepPX1LjdsjYcXdjctn9cNNM6RSRIEMecytzCQGdyTL5lECgl82KxfomoiFBpCXO4lEbkcJw2cTdu1gO4wB4GSelQewxeDMRzE9QWTvIcla6iav1qmrA7AviUfbCGvCLPHcP16+K1meUdOEwMAxcQZ99F89pcW6NxIDVD6w79lfPYcNU0co12LBPznsUU8etgVvYR61k8NpIpCymFFIsMItL2tcU6GYR18FgzbAXECHLAXZqDTb2z0y5TEBBErQ6YEO+1kYETXq8h/3DX9jJho7UHu4n4G2cOwh6Su9yISnfhd7/5WoIvVUDDMBQl0ab8BBeMV7anb7qpocuf7pf/VNAIC6b9lp+CNNciXrvs4hSbKSV3k3W+830FAUsZj+vlcaMmTPpFourYEcOHNY2tqvrGV2MEbxsSWWYtIAyOd/IMDGyMI2GVaIwyXB0nd6Km4T5CTJtgHFnaMjLsBmTeJXxUkOTieN/7TKbK0dq5iq9QWVN9qBj34WwO05Fre9JuB3bIc1KkowEaWRqhYhbm5hSZ0ktdzoApMDOJQAAAs5JREFUaUzMQGGOJegoUZ44sfyAx7hvFD4tW/RI8e+MSIAmQ6mXkSnuTgLfDPvl9/Ea47eeD1x//eqj1m3yf7m3Jt6pjQg8k021RSBNxsQYvGw/9zN3sZ+dIJ467+EnPOZWFtXDZCvpwOaOg8GK0U+PJptTeo8zwZfUMpyaJjuRBDla+7it9/GyHXT7M4ahvhhuwya8zvidBxx/+w939u3Y4d03VonfJ7klEjImAlal+qFDHOjymknGrDGwGKgWN3JYeBE9TbCpVWk4UTdkfgyV+bdSFhP7Xnaslkc+plCNA3dWrRiGehk7jbkxdvBNUqaBNzBe9QnNJZevzg1vnbhqcDS8xOXdlQ5grQaaLsned6J3BCbQ4qvQ8qZ3kDnp2uw+FBdfxe9SThOaqZZETpHjQ/qUFtxDGUPkY8y8fxcPYA1+j/Gaj5jO/eR1f7Znj//d6Rl5AreYIWzj4P53Al4dchH9tsZu8JfuyCbnX8tHLJOtONFf1N5/kcd6y4BDsfOPB7ml9GXvRQzj9xzma324c+vDA2d98JyfpE05Griyh8XZXBkc1AlmTV3siQMGaDowk6qAJUTNhp/vh8wUubUvWhwvQfeutPAQ8K0g+k60A38dFVHGmxhv+CHf+eevNsdnBs6qVow/b7rxyiAUy2IpsjiwEtoY2+beEeVwfk9hbH/fmuqAXHu8pdEzFuL+A9w3cJDw27iMfxMN4HG8hfGmnlKeffblVkma81kYHM2+uDNfyHX3zRGdrE6HFi3Old53QtfGH+++5px1A1vucmiUVh45qJKt95YaidtYsH2DTUgRb3EcsQfd9kU4hQXs0+S+KftpRF1nWFXmQn0t7MetOEzjsD1mfeVgYh7mhsC0mhEJdSha60j/lYcTvB5HzADcQnoojMtJrfXi2qihzgn6+XDsMI8j+p89ZMV4TNbl9fF2dReO0DhiMfB2jf8FAAD///GAmTsAAAAGSURBVAMARuGORHSM5lQAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;IDM Integration Module&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4nOxdCXhV1bVee597AwlhygBJZAoQwEorT21fB4cE0ABt8YGGT7FacWrxvQ520rZa41B5tX3aig9fqQJCq9aoVCzgDPopCopWRVBIQoAIZCBIwpDk3rPX+9e5IdybATLn3nPv/30n95x9zs095+y11l57rbXX8lAvgZkU7R+bQl6dSdpkEdMYYp1FikdgfwguScbWD1tCw1dsUqoaXzyE/f1Eaj+uLcR/KUJbMf7jNkoq2qsUrouhzVDUg+A9w+KpT/9hZJlJxCYHvz4RnZ2BU2kU6OyOAB2uKohMKT63Y3sLhPQWxemdauDWKorhpOgRAuCK8ehkPh+/lgtuvQCfp6E5jroHIgEOEKv3ICHWkvGspdShO5Va76cYmqHbCIA520Ple88At0/Dz1yCptOxJVLPwodtFzYQgiqguqPvquGlxyiGRnQLAXDZuDMxrl+Ffz8Lv5BJ4YFybGtAmcsoZeAGpTb7KIauJQAumziUPLVzIX7n4zCLwhP7cH9PgEAfUcmFH1OUo0sIgPkLcXTAng5F7Ac4PB+bl8IfW6AjLCFP3KPRrCx2mgC4ZswQ8qkfY4z9Hg6TKLJQhzfwDJ7ibkiDrRSF6BQBcOW4r4CLfoOpXC4OPRS5EGlwJyUNWxlts4UOEQCMOBYdGDcTe3fh8AxyBWBYIn6QjPdPasjWwxQlaDcBOJ1flXUtuF46fwi5CzJFXEiWb4EaXPI5RQHaRQDMZ3upqnoeOv9uHKaSOyFDwEPk9eZHg3Ko23phgPOdzr+H3Nv5AtFl5pPPl88HRw0il6NNBBAk9oXzk8n9ECL4HtnefK4aPZBcjLZJgMqs6ej8O8ndnN8U4qv4PrH1M8fO4VKckgDgyDkHVwnnD6XoQx8Q/n/RAd9cx33tQpz0obj8C2nQiB/BS5hB0QymnWTpK1XSp2+Sy9CqBHC8eR7/D/Hw0yjaIQ4tm2/l8lFp5DK0PgRU7Z9Chq+jdswUXA3FF5GKm+8whovQYuc6Xj22b6HoUvpOhlpIwl0ggsF0cHdHI5fCEs2oGcqOpqr6K/DAX6XohjiKPsEb2YT9F8mj3iOfrqDBO46Qi9BcnFWMGU2ar8deX4o+MDmBI+p1dP7T5ON3aGjhLjcHmjYnAEtfjtcwjqIPJRB/z5DST1D94Y9Vxt6jbfoWs7p6fUkfOtpvkNa+gYopQRH3YUX9sBm2+ajFlt+QPsiaa0bGpx3Mz3YinJnCACHTQMz5x5MyT5NrPHxtgcLYbp5Cl/yNUod9dCp38A3P7U2xlU5jy0jE03hleDxrNRJMMwhbPIntQDkBMWI8kk6ux2ZjR4aOWrzwSs1UahRc0Jq3WDbvVnF1ZYsvHHOIegGNBOAYOg5k/Qq7d1N0oAYPvQYazx8pqfCd1sR8fj7r0nPLU43P/+9k1NfA1WfjpU2kgIJsUcdjKgwFglY/w/YhtPF3mXi95Y3fsvjCpB4jhhMEcGDsMGL1D+yeTW6Hog/wrPdje0alflrT0iVXr9w5yNO37yRjOBedfiFe1Fg0d6dfoEH/EMXTPKdIvTo8PuOj/BzVrQEqJwigatxlGLH+Qj0fut2TOAyufwLj730qZce2li646uXS5DifvgC9cRWk4rnUO84vCAPoJIpe0ko93r/Gv/H+OcO7JZzdIQBnxU5C/CL86NXkXhSh439Hvr6PqbQPm03lrlhzYEAfrp+Guf6NODyHOr5SqatRAaJdrS215FB1+oaCOapLZyQBAqgcNwEfz2NvJLkTG4nNLymlaD3G+hDtO+/JLXEDE1PONcQ/wvNfQN0r5jsBtRe3XmBILV46I73LAlgDBFAB8a94OUVGOHd7ALOWWgV16xaVsv2Tpieve2F/prHNf2J3LrZ0Cn9AHYH+Qryw3rL+viI3rdNGqQYJkPUQie/bXcC8Rj2FGdhPVXLRnuATotnv/ureydDqb8fhN6iHF8l2AURxXemxaMHi3IxPqBNQXD0hmer8z+JlfYPcA3Q+P0msfwrO/yz4xI3ryhNrj/nFyfUzbKdRJINpE0j3tiXT01/qqGFJ8YHTYfP3/w3/bDS5A+yYcYlvUsmFpcEn5q3Zl6qYb8X5G8g9pu49EqdpEuqWLcvJrKV2QsPrJ8kZImH8axtkpY8SsR/a+Tes2T1GM9+H86Llu8nPMRzP9DvrWNyPbtqwJ76d3xUCYDFptvuLYYp3oCbdqpKKdwc3Xr+6dJzN1kPQoL5Dkb2CqTUMgNi7teagvvnKF/a3a/qqQT1jyBXg7Zjq3dxU27/mn/tH20o9wEpdSO5GolHq517b3Ax/RUJbvwQJABES+aghZd2rUovWBTfKmM/a3IVxIZeiA9LxNxkP/fAHa3b0acsXRAJE+vIucaosJV+fJ4Ibr153cJBS5nbM7+ZQdCHRMN1ymPp9V1zVp7pYQsIiffXLJtL2/wSbd/OeZMuqPTYP+sC15M4x/1QYiJ7/5TUv7J1yqguFACJtTX8wPsfY/99Nlb7+ifsvgiPnZorOqKbjGAUGuOPa5/eMPdlFQgCRa/5V6mli69XgphvWlEGp5V9TdC5kCQXT1/F+bhbjV2uXRHLIdzWG/4eD/fni2LHJiJHnaxSDA0jCy+rq/LNaOy8EEKEBj3CLWlZZcEtiv5SL4EifR7G1DMFIZEM/DkjG5sCLUtUUqag1jVru/H/uGgxzuEQzx9YyNMeZNtnz8tdxM4VYSzAYuQDVOtGGZ+MtcvIIx9AEFiyF83YdLW0W7qcxi64gF+BvM5KrR2xMvxcu3rmwbTxPETu0dRc4Qyvru00NRJq0KiWXID9fmSXfSl/n95rvKEX5EkVDMTQCUuDiI3b8WcFtGALMDnIZlk8ddmD4xvR74Pq9HE7ylyiQ9ycGSAHSemawhVBMwcUUWLzgKog0eOSbGa/7LS0eQIn82UcxwHRC065+fn9j7Cd0AE8RPsvIpViRm1a+ZHr6Aoi/y3H4AgV8B1ELSMQJFpvJx4+hA/gLye2aM+aHS2ekvwYiuBIv4DdRrhv0xXuYJmHwcqApqVBEo+v0gJYAIqhYOj39Hg5EAUezNPh6gq53wgB0YE2ckvlzdEybGqSBz9JX4dlvj1JpkGpsdmYDAZMpq7fJ8axFD0Q3eGRa+m8bpMGLFF0zhTjMA86T2UCAALzHijAbeJuiDSd0g6ibKcBn8sWr11QMdQhADdp9EH9foSidL4tuIDMFWBGviB4rosqwyD/uhNeMaS0efjdFKyANQq2I7pYGSuIltMo8QQDJ22Um8DJFOcSKWF2TvkDBj+5yK2IfZh7TSADObMDw40TucA51BrIEW6yIeCtXUEA3cKWdRJEaFxo4UVu7EX9XUwwOjusGUBIvIxfaDZhMeggBOEUVmR+lmBQ4gSArovvsBiqteehUStwG/H2KYgiBSAOxG4iHkQJ2AzdIg+RmBKDU1nrSnkXYjcoyaicFpIHoBj7JHO5IA/qMIhv9Wl05wpVj5+OJ76Owja1XB8nP56i0HcXUG4AVbd7a/efjBd6Gg1MuwAhXtB49a/kfh5q4kmJoGQ26gTYs1VIjVlq2SgBO2TTDf6DYUHBSPPzN9E/AKCsoMq2H9knj51Vq4XukWMa62KwAePfsG7xFU/POLZ4y88SqI0gCm/0FGAYikVEOnXoBRdLAZ0mz6AJtS57sUhRedPHwpIEVt2tj/12z9zoOSiz16IwRRYqVGNEiamaABzgYQgBbsvMShcL3fC2vMWOIUpt9VJ+wELsPUhQ6i4Trd06ZNc3y6eWwnP0STRkwoFy5e0re6cHX2caWqXNESQFWXBZCAAnaPgsU/hd/Al8c3O4svbZ8C0gqakYREeyZnHda0oDKfLypR8EJ2dSoM6lxhs3M4GtHbR4mLvUXKYKgWO9pJIB12dkeHFyK3QnE5s6dUy/NDrlYlEKvN58CROAjF0O4vmTyf0z3s/+vmO/LMvOmSTQgDPji3RfOzDjeIFHImtRzFFn60q5GAhjhTc7Ex/SGwyxlm7uKc/LGB1/t1NLV9m14+AdISqq4EMe5nkkva+B6q8ULmc60jXV+cJP2HH0fusG/KDLgY2W2NxKA9pvpuPnGeHFW9A2l7T+VTJ0VMtappOJDZKw7SOnfk4vCyBq5nuwVrXB9U8SDCGbuyTuhL0nRByhWaygyUEY2FzsEsCc3LwldK9wfnCxC0irnwuB1fzNJIGvyk6y7cMVPnKKKEY4d2bOHiYbvcD1RDrXG9c2gvm4fsEMYhI1TZKqcwh1Me7WmHQ4BmHpfJjrzrFYuzBVJsDP7kgnBzY7PIGnHMrLUVRAXEkYVcXrBcQ0fys9fMahLmbz2JswaycRfCW7wey1ZZ9Gp/L09AqU+HrbptL0OAdjKkowarRdGABHAFrCoaMrsL4f+D3R90vY3wDDXYE/KykeMc0S4PnlQ5R2476U4lDTxbeT6UIBwztsxfXrjiluJNkbrBxTe8OPGX3cUV87Ls9CPQgCnegE5mml5cc7smdwku7ZK3baPUvr/FvLvSpyRdG1hW1tPZjsy1oPrl4Owhes7VQ4W7+LLfesSU0La2LxP4a0kVypbvSs7uuhQfQY4ua1l4ibg2j+XTJ71i13fnDs4+IQYjJxEjbb3erwCeBLpNWzdUuakoxBr3kg9OD9orO+KNPEpfjYTgxssVh9SeFtO32Db2iU7Wvu9pzPTsHZ8GRyj8s2x2kXFUy75UtOTasjWwyqlcAXFKbEpSGJmCaXq1dlCozXPb61osOZ1ZXLMAUqZL4a02FYpREO4RliLZHpxycWpTnItrciWNPHtzasjMQKXKebHiqfOuj4wiwiFGrC9UqVASfTUXY4jEAOLKXkL9bCy6Gj4AWveMgqM9V2dQAoMr7I4P7/x/xrSR1lqFIUnirSlG6O/PUrrMZi6dEgBAs5QRv3Jb/xTd104+wHjG7A5c/2ykJz1gUUn9AqkzKtUOSEL7HE2xotzQRBSm1gWKEqNnjhqNxiGt9ZToQrXpwwsn8rMv8DvnUcdVPLadis0bPfL78hzyLNSTV1ZXX9v8mdEYVEcNBRMqx6+aGjJ8UMPOn8sdQ4whKg5xqYc5an5+66cvGUV1YM/PGfz4hBODxRr+mQ7drczn/0U1dQMJL8aT4Yn4a7EziBGqKG4aghGZpmRSOLjljpYRNhBJ7GFpVsskCBcb6nK+Rjrr+uhXMjpnJAwiBoIoGDOxPpr1u7bE4b9X0KWeSK4uoikDeuqYhGpIKYbSdnTkgceeAlexce0v9+7TSWCwPEwQhNt2N50qpYeHD0AYnoATvYHc/cDYcSjdUCgTtJx8GFYII+Sto6SqqumQSPLQE+NZxu5nujnOBQzbfdxfSiG2Ca03iJuupwDQSI9dQ+nhuLVpo/v0+AmIYCuTKmKmaJU2OSx8CpeQp7q1TAl/9Ow/WbmeWdVqPz8Fv3lAelQLOVS21ky9YQR0uF6XfF9cL1kCu3pXIEgXjskdhKPVIOHEuIPl/qDJWClArM/IwAAB3NJREFUJU3LyggBdFedvCHQhuaBuS9Vylu087UP1xRPmbUeDL09M9kqVQUFXRJCJVyfPKhiSmBOL7pFr3BcX610SEf7DddopWQaHBYEgM5/fOTbGc0cVUIAA6h7AZHOk8Dlk3AXPwBXbC+pMh8VT75kM2v9L9b1u6x6VeOPrzuWtXZtu4wnwvUeq/JG/N9rqHeTQ2sMf/1DGixZeBM2WsA7ltZ/Ectf0xNCAD3JMf2VFKeGFojPK5TxH1PGKsccpNBTl1CyM2f2bszTy4xSNVqbo8rWtX7LrsNMQ4OC48TyrJXVH5o9XjaLwjgDm2j4sdzArQNDkbr34dy0Fp12vVlMAZ5H5WVn/HT0BkdzYieJHR9jQ3XwV/vR8z4xuENv9TgfbMT9KuNt+ChX4Qvo17QkkQ4/19oFQgBismxzkaEegGj9CXT8noKEaBjOqhvBHSzc2M3YgPv648LpWa0OrSI6w9ZxEylQTnylqQ5t0+Ih7M1iHCXQTPKXTU8vOdlFQgCuyBbem8CwdRTjVqjjy+9IsA5YOLsEhyCOFizJzXjlVBcKAYR/9ErYQ1V5yAqVpNrIrKA3CnJC6eN7EunIo22pJwzFindzxBXPDjMo2l9v26GFN1gNFeWVehbH0J/3m/j6BxbmZLVpSg0lW0dFltBuBdM+2+dvtGJKTn4MCSOoZyEeyPvqLeve9hSRhjvYiNsypgh2AmDz0vFvrjp8/LimziN+jFHUc6jG793ltemeFblp7epLbZhFAsTKrHQcsFfoj1XQLFUlxMH6qTrrZW0rSiH2f2361v1x8bcz2h2FpO0+XliIOFZZo+Oohqr1UXADLJdwbXO3u6FBcZvxce3wTRmL2iP2g+EZu7agsmTybInUOY9i6Aj21Jm67cENMFdOgmLdnTMACedaiV/63ZIZ6Z1akKqVYy7kdeTCqiE9ATi53q6pSW9UAKVuMVhTqnN1lxFoGyjsJp+lb1zayc4XOL4AtvS/lJ8/gyKRSTG0Bz54Lt4Ijn4a0G/fMDizvtgN878ykNuTxuZFy76V8Sl1kenZIYC4w7rUH29LGHeMANqHrRbZm4IboJCNkwyc1HWowJCymlkv76cPb1j47awuXW/gEMDwtwqO7Zxy6QuwZ18KskqkGNoEcPnrw1/9R2OWsvx81rvVvmySGIjOQbgbyrl6DWP08v6H7Y33zzmtW9ZYNLqDLV3/um17tmH3yxRDW3BIsX42ePpX+m/lqTie0UHZLMEaEiO5TVLWG2OepwTfJ0s6qN23FY0EMOKlVXt3Tp71NKguRgBtw5uG/ZuDGzjOnA+NOquN35cOF91BgmDew+H7tlYbEqo97y/KSz1CPeReDgkIwc0/Dwr+XkwZPCWOoYOezFz/j8YVTze8y15f2b4vYVZQRYHwcPEESifK7Eo6WsZusRZWoWtLjIb+YHib35iShMQ++xblpB+mXkAIAezigx+PtJJXQun4CcVwMmyqt+tDsqpn1BCXevQSv+FVHrYt+AL6YTNsw1VMqs6y4tDBdVXD+wyrzs8mm8IkgKTZbKU4Z9aZSqkC7LZVlEUbjqDn5o9+9ZkV5AI0C6YcvW7lBxgLXJ8IqhN47qixXJNCt8VoWtb2Y7AOvk4xhEC8fhjjF09cX9Ar43V3oEUCGP3KqjKlLUkOWUUxHIcPov+Rys9T3iAXodV4+iODlVQR+7OKlV5vgHpZ+ejPTRe9RjpOarIuvGjWEMvv5NCZQdGNYvj352aue3ojuQwnXVEz9sWV5XjwOyM0E3ZXoQqiP3/Uuqc3kQtxyiVVQvWwVN1K0Rk9XAel73+rDqU8ocJ7XUqH0aY1dSOTrVWwEt5G0VU3QJS+B2tr/b9327gfjDYRgCzlzkyxHgERiCRw/UISUXyx/R9r664Jb66qIRejzatqhQiqqlOWggh+RS6WBA2znocsr5U/5uWCdiasiDy0O3BFEkvurLSvxdgI5bBX1+R3B47CCvYgsX9BsKPHzehQ5JIQQXGVf7pmdTcOzyR3oELK5MV7EhamvbgiatZJdCp0rSj7knO05juwO40iOkkDb2Wlbq/6POVZNyt8LaHTsYs7s/PSyLJ/iEnSddTzyZk6i1p0/kpMc/8w6tVn3qMoRJcEr0oC5lEqeQqRuQV+bkkAGabVRoMhxi2M98Z+PFrG+5bQpdHLIg2UZeYy8/U4lMjYcBwWZKx/yjZm0dj1K7dQlKPLw9eZ8nVR9nujLcs7l5jnoOkMCg/I1HU1af0oHF0bJhYUxBbCUDcQQDCKc2aO18p7KRPPxg+N64WQc+nkUjzly6T0454jaqOEwFMMjej2BAaS+6swe/ZpHkufS2xyKZCnX8qtddfSKUlA+TkrehtP94Lyq5dGpeodXZWY0m3o0QwWUpHU38eMJMtMgsHlAkgGWUIluYpl6+hiynpQWZlk6cD+Dib1Fht62+OvLRr5xuqDFMNJ0au5YUqnzEr22SqLNWVpRVlseATuaDR0xyGQHZJ9W+oQHJcUwsHVuOEDkCrl+PzMMO3QmopZ6SK/3xSOTbX2xTi9ffh/AAAA//9SlJnyAAAABklEQVQDADvQqqCe/9Z1AAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Video Download Helper&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACYUlEQVR4nOyZO3LbMBCGFw8XbtKwlNochFdJlxtkJi6dKjlDZnISHQStXbhw48aFCGywYKzYliDjsQDpGX8avUXy//dBEJCGDC7/XG7kXu78y89QA0Y+F2Dc3o2PXx9vIREJGQTx6MXjPxGl9xh+3/IiBCgZnfNjcGmRF/5WDOZlN8tAEIawKvIygJXfNyAvA1hRGikUBIA3AwvQ1UBVc0fIb+IYC2WnTwYamltXExfw0cQc1DQ3XxOfokPGlssA074+mnhp8gw8sSIjy5QQYwDWV0KZx3j3TSyGX8M3//wldyq3AozX/FsMPwe+wujU3M8HVO3L4sE/f4LWtDCH8KD9wx30MFDL6QDcadzjKLSoWqxqMdNKwLjJjeHIw/WwkTqy4rbC0RdIvHXj/dX97SF0wYSS9cuGr+EOgPgvfn77DDKhlNp1O6XmmzMW7UE8cVS8wYRQ/Jmo50g8cbL7ggmoN8HY3GaC6Uj8fIwIZEKDjpvo19xmEqfFE2dDFEygblNOaQEwk4yLJ97M8fZ6u7HO7hCwX09gKD/jTyjjzdXN2T87koo0mLD9TKSKn3+bSDAx8Zh4o7mN0mni531l8GQCzvVETXP7QUrtvfgfaeLnTTLZfvcmLiz/YFcgft6sADLhlOM8OxlpZbZ4onikCSYkiwkjXZl4omqoDCZElQkjsVw8UT3WkwkUWNLYxp+NqsQTLBcrwQRgTiZYxBNsV1tkwkc6xYTxR2URT7DOBYMJ602I6AWgAcUnnmCfzB5MHGeCXTzRZDZOJoR9sVBgUCG7eKLZckIwMQUTgLqNeOIvAAAA//8eLveDAAAABklEQVQDAEv5IGsPhmB/AAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Video Downloader Professional&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAG10lEQVR4nLxYeWwUVRh/b2Z2t90uvehN7UEP0IpYqaBASpBIEQNqoJx/FDBeCfIHJERMJB6JYjQhBrwICilYTBFKLCBVRKCScFkL2APaLe32vnfb7XZndw6/t9tddtvZ2Vna8ku7u/Pmmze/9777MaIoosnHoXpjVrhmblSwX0kGTT4+utX94ZU2xInitqf9Ck86oT6WJ2w0TFKsRon8pBNKL6lHQeQt1a9MVyJPydxrHrKfMgyicWD7zc7+ARuyCd8tSAhhKCWPYBmjxoerkYXThWvOLEnMjQ1BAaLayGYV1yEazYkLuflyqsKn5FjPnhoM981WbtFJfcqJ+hs9wygQZP3agBiMeFE5Gz+EKlekHl2arFbTiMZNJnbuifrFZU1tFjtSgLevtiMrhzihcEkSCgRYSRzaXdn9ybUORGHCnxfzZ0QUL0qUkb/eMzzvl3rYnvnTdFdeSkGBACsPjFuvdXxd2Q27RS44YUdO7Jc5sZKSzJEa3i7AAviCxymMUSDAAUXqfhtf8Hdbqd6EwGU4AT4PLIh/IzPCU2blhebSBhOEwbKVqUsTdChAjCLklxxZbqPZln36vtHKkwGWjwzTHFmYsDxRN2gXPqjs/qqiC6mp3ATdpbxkC5D2B9ExqdYVFEYIxRbf6+oaJlaiBKA1DY3csoIIkQZsi4yoKPKHiKkBV6QQghgeGdy/PhO5I3WX2Y50KgTkFCpQ8JYjPFy/edctIK0EsAyMjXbOeeUkBIvDsKDyV9OejQpmBf/7PFHQUBS4ZO4pPaVlPAg51SiKYSpaQ2MNrWxlE4RwFQ2vduvfK7lyDnuqMbGrL7awvAi7FpjLKobg2IH98+LyEnSct5sTQqPM5mCdsbrdAp6CuEnTHU2BFX58qydvTFyQKj8w8aOoEFVBWpiFm/h6UsvgovsD7QOs16goQwgRJ0oJUfsKxONHZa+13ch6xnC3LiRU5rzmJrPWtjkml3yBK9sLo/iMF7yS9YgyhPzJeeJwvZET5ITeudrBfH8HykUkC0EhIZm17fynExdWbz7XuPj3JuQbv7Wa4XNvRRddWHO8yeRbUJQmJPqT6hjmNlxuxd/e/gISJyuA025OC0e+0bgqfWt2NOyAYOfXnG1KL9EbzIrKOuSjYvSitPZSS/zRmmN3+0nJAVSyInu3ZG3JCJefd9+8eP3GmRmRUARjfZ81+VjtW1BDyrzGk5DMDt3ptxZXdBOTp9CO7Ghu0xM/zk+IVJY1p09R33strWhpMuJJZD5wu0dztFbwMAjfXubMZVKYFaFZNyfmhxceE19/EsISTQWcS9anhopvzto6Owo0aBtgh/xFWonA6P0EPpY7DY0b++bG7X4qysqLU1QPjMTTe9w/fbi97Ebsre4ravDync/u9Cw7b/AcOddmhlp2yCMbRgcxj4WokD9Iub3sA53D3PY/DRvP3K+HltQBiOnvX2kru9tfYhhwiy0/31xa3ftTg4zPy0dqD8in+GDGUb9q6D/ah5wjlzstiKJQEH22ZWTEbOdFG2kB4AgGKSQk+iYkj1AVHR+hAf/fdr1DP2g72TS45GwjqVUY6mBV766KLsOQPfNUA1G6ml4QrZWZSjICP8zpx8W8lBlHajjMpBfdHSnsOdKFQdGyp6Jrz41OMmLlDi1LDqTAG1FMwDYEyAxVl+dnaF2Nh1pFl+altKzLjJ+icjoEhn7txeRNaeFIOVxF7EOeDy2M0Q5tnFllJEWW21Da8jNBX9CLzQxTdDYlaUNScchxT60gBo612SQFjo1IszFmcuwkhX0QonBl/3DuuUaWn/gyTU3jyj4WDE4YZdUOdUsQYkUB2QUIMuVN4zo+kwONES9RqGJJle3JjgmmsF0MPCQohkMHaGfWVM8hCULORBMbzHzzXDx6VNCpXAneAVeRD/8M9fl/vUk6hnt0nTQpsVotPGIeVEGEEGlHyGEPPljVM9JUOr1AcO2j81KULW9l4G6BnXYzakK4C+nItQ2EEIPxezkxPzcOMCTYYrNdaB20wTNJRIU4iMG14BQwJ4UTtcwoWxzbLTHeR2bw6hYL51ibmB2ntfEinK3dM7FOQkmhKqiQwJcXJ2tpx4PSJ2iJx+ta+62fPh+/a1YUpPe4whogVLk6Y3ZkEAoc0KKoDlXD143V6TlTg/fX9r1b3gaBzrRhBmTGUcLShAr1xoIyA6QkXYjKDMeuGEdPUXWtyUQPixUXmk/rSSkyMqEg7ngmRrIz9nnGuPZya3FVLwkY4P9axrAqfZpWURSWBMsLccfrjEYbiSUiCg/TtOenB9FUAIQA//YO/9VpiQtiNkwPQxOBEsNgrYmF4n9tSqgvmf8BAAD///iM0wIAAAAGSURBVAMAr8/ZGQ0IZdYAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;哔哩哔哩 Downloader&lt;/p&gt;
&lt;h2 id=&quot;关键词查询类&quot;&gt;关键词查询类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关键词查询类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADoklEQVR4nNSZW4hNURzGPwyjXNMYEoph1EzixbhkFHKreZBQ7g9CZnjxLB4pufPAiwcpecC8IJLbFFIuMzIYkcwwuWXMyLgN39dy6syZtc/e56x1pnO++tXpv/bZ5/vvtfZa/7VOHrpP08kCMo0Uk6GkL/lOmslTcptcII+i3rQHMqt+ZAPZSsam8L06coCcJL+SXZjJBJaS/WQk0pd6pZJcC7qgF/wrnxwnu8hAuKmArCV9yHXyN/EC3z0wgFST2fCvM2Q1EoaUzwT0lC4huXk9wbvkFnlB2mDekyIyE+ZF75nk+6fIGsT1RB786SCCzf8mx8he8ir4FhhFtpEq0tvSvoo8JrtjAV89sAhm+rOpgSwnDxFdpTBDpsTSpocxJXY/HwmoFzVbFFnaHpB55BNS1yByEWZYJaqGlOtDT7hLY9JmvoksRHrmpRZSAfuQ0/syRx98JLAlIL6evIebPsNMozZpcXQeQuPJc0v8CpkPfzpHFifEfpBC1x4IMnkYfnXEEtOCWe6aQJklpuLsMvxKpUSLJV7mmoDt5a2F6V6f6iD3LfFxrgtZgSXWiMzojSVW4JpAviX2E5mRrazOd03gmyU2BJmR7b5tru9AkyVWgsyo1BJrdE3giSWmgqwYfhV0z3rXBGoC4uvgV0GrcY3rSqwNzAd0fZm/wKzSH+EuFXWqaIcmxDV8R7v2QCs5a4kPhtkf+NAedDUvaXPT4WNP/JpstMQnkj/kJtLXJrLTEtdUvZK0+kjgLcwMYZslVPJqmN5A6tLO7BDsBec+/O95XzuyETB1e5+AdtVGKrsbEC6dH2n4VQS0vySTYYavlwR0j6Nkc8h1Gk7nyWmY2as5rq0QZoelrecSBO/V28ksci/+x10U1bxNWsVjpxL9I1yvB7AMZm/QyUC6cjGfqlSir4A5c+qkdKfRMPNaG3xVpc9gNvbVtsZ0Eohifi7MrKRzoHakp69kB5mEJKfVqQ4hXa/tXWVAe8x8XVxsOMw6oXl7AsIlszqVPgGzqQ81FFXpmE/UGDIVpjAbBvP/gHroHczZ0h2kOPSiJhBmXjWPFq06dLOirsQa81lnXoqyI8ta81JYAlltXkqWQNabl4ISyAnzki2BsNkmbKrsViUmIPNVAdfGzNciixSfQM6Zl2IJ5KR5SQlsR7B5/buSteYllQiqYWyHtDKv2SZrzUt5sM9EOWFeUi2kM5cZcbGcMS8pgaswO3x91hmOjgXrkSP6BwAA///NvSThAAAABklEQVQDAOp8wD8v16F1AAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Context Menu Search&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAOiElEQVR4nNRaeXBV1Rn/3fu2vOwbZCUEEmIChKWVCogFRJG6owLWabG2tqLV6VQHCwpdGa3TGZ3puNNOLTPYVlpBFIQOFhApCFRFNiEJewJJyJ68vLzlnn7n3O2cm8dM/+2Fx7v33LN86+9bHjr+zy+/d+CHv902oasn+kgkoU8fiKFMA8J+H3yMgYkJGtwv8Y+ubqBpfJS5czTPe/7XM2YOytuLdXRvJJieSPOj06cnjo/MDv117fIb3/GsdK9vPrr+tTjCy5JMh8+nIS2giSnMoUsmSJOYSEGEh3C+nikHasAw3jR1P7p0jSGRBOKG+WzEBprmjM/91pplsxvEe3v6otVbt7f1acv8NJIeZAj5SORc7MyARt+gb/Ex+LP5gfQRY8bwce86pFrnPcO612AIGnw6Q5rfoA/R40+r2nmi/9TWg21THQaefmXnmgMnrswvyk0TgjMJlz6w72Hdm9/CUswHMLjzxMWY9IH7zv5Ya+194ezn3rvv7IshK01HNA68+t7h9UJPBw4cLX587dHTsTgLZ2cEVBORzEaT7EUYuaYp5qClMCXbdIZf/+P8q6zVdQ0tVyJYeEP5j/wHG1oXtHQMhccUp8Mgdl3yucw0k3hbaIp9MtemNTiScl3YfGCqCB0fd4at+Zp3vjiXyXS759JwKOjH+ct9d/jb+pL1yWSSTNQwJ+qaRKm5CbOGNNs6BEemBgy6jcYTiCcMQbffpyMt6BPfsFiU5SjT7VAv/nXvNdOOnbmmXdtwYs7KSvejtXOo1n/gRFdpcV7QdFY+hfMhKOUEGGJjzoSma47MfbRhTySG1o4IAn4NxQUZKM4LCdVGokm0dQ+iqz+G7IwQjYfFWoPJhEs46xk330mMa656maQZDjZxgxX4/X4tmEjazmpyKRiBYW1imhIjCrhUo7EkTrf0oKIoE4/dXYcZE4sxpiQbhTlhQgsN/YNxss8BHG7qwNZPz2PPl63Iz05DcX46kkkTVWzbVoiWmbFs0xSeYZqWRzOcMsNgAf/o0nzt88YmZKRlqtKBYwHiChDx7STZzt4oET4eTy6ZiqyMNHivcFoQI/IyMHncSCxdUIcdh85h1R8P4uSFLtSU53A0FUwIei1mFL+RmBHCkzSgkGRrIhqNwTRXy9aZbItcMxpJXsPlzgEh/XXPzsNN0yqdDSO0/nBjO85e7kU8bqAoPwOTqgpQUpgl3t907WjMmFCMB5/7CPtPtKO2Ipc04ZqQ8DGmuWIXt5azKg7u8mGOm1Dr50ZvQrMHLWCqkEfC3oEh9PZHsW71fMy71iQ+aSTx+sYvsWFnIy60DWAonhREBSjvyM8KYdakYqGlypJcZIRD2PDrBbhn1Yf4rKED48pywM3WPgNqliIrA65MrdnOdNPsde5ddsCC/A0zCvO5F1r7sPK71zrEt3b2466fbcbTr+6l+0GSejoRmo2x9CkfkSGc+e0djZj3k014b0+jpU0dLz0+C4XZQXT0RE3zYPYZVrCTzncDnaEERSegWgFSN2CHb1sL1iQe+um+ua1PSPPx+0TkRt9AFAtXbMbeI5fwtZoRKMgJCS2ZmjTXh4M66sfkC6xeumYHPtjbJNZWluTgB7fWEXr1O+e4hBkOsczayw3qqpAhCVl3sgFrkSFphN8PEFwunlfjKPiZNz4hm78iCEwSkzx+sBRajFMGNiI3hKKCMJ55c5/QGr/unV2FsWVZ6KFUF4wNI06VsMcypDSGWYTr3GOUTWA4/sAhsbIkC7OnlIvnw6cuY/OeJtSMyjUDlydXUgkykKQ5JWRe58kE39pyXOxRVJCJabVF6OiOKHO9a4cx55yhvtNNwbuOzKVpT+COW0UOVzYyRxy+6/ML6CIYDYd8qvoN9TCZMc7EyNwwPj7cDCOZEPtMJpSKExSpiaIrVSA1I3YMkM/WXRuzJ7s2F40lxOH21XSxW6QJZkAyUkvMkA4zzHeZ4QAudwzgHGmCX2Xk6GkUSpOW+YGlFoBsOkgxzv/4DZa0UwxBvIn9FnzR5jxVsK8IwSlHGDMQ2amFC7pK5LOGzfOZgN2hobgYDvrNPIknj7qcCEKFUGUjCWqdU5K8pNS4CzB444A9uX8w4TznUkoQI604uaibOLpEWCfIu3HieZqRHg6KZ+5b8aRhBTHrJE1aZGUbzBm2kgc5KItUwyCBGjL+WmYBc4ybS0t7HyFNUqy5pjJfmBXgUffVfEBoiqGTcJ/nThXFpi/xXCoaTSixQIlH8JoSVBOCBKNJuEHBcRDDZCQrPYiT5zrw1dlOcfAt141BaUG6yIdMSdnr3IO8NswVwhFn/rTRtuLxn69akWYBgdcHIH3DYk72N/u9YaOQoUxUGeEaaG7vx/ZPzUBUUZKH791ej8bznR60cCUiS42bTQMlcVNqCvHwXZPEHsfPtGP/0RYUkDkqDik5JpPosWlhHkfWrDN0G/eZV03WJoWEQm9vO4buvkFBwKrvz8IiCmyHiIgYJW+6hmHoxU2DJ4inznUKs3xt+c0IBgJi/bqtR0UdYUPxsE8Kjcgm5CKSGXx9k2YvXtJ4sacuKxyAkw1aXsKnZ5HjHT/dgb7IEBbMrBZv7r2xFr2RQWylFKGrbwihADWOOMW0a4ySuvauQZw834EJFK03PHc3plxTLNbt2N+Ex174J2oqC4R2mA13EmhAQjb3VSpsEh4d8026YfGShovddVnpATFRU6eIpblZadi27zTl/wFMry8XhcWCGdWYPqGI0uk4aSeKtq5+9PQPidS7ujwXy+6ZjJeX30KOm+vsl58dwqmLXdh37JJVAOkO+mlesp3U1IVmzYQeiS0jpn3n2Xfe/XDfuYUlhRlKR0CTuhNcWgNE6NlLPVj54HT88pG5iizaOnrJ1juF9EsLM1FdQRL2mU2/BMHlxdZuEc15qs2vJ363DW9sOoIJVYUUE6yobldpcrWmaQodZo/BbnjxRNro89XfsGgJORppIJSCeDh9olDATzVuEJt2N+Djz86SlHMwypJuBq3lkh5Tlo/CvEzCZrNf1tbZi9Wv78YyMpsp1SNQM7pAjN96fTXBcQwbdzWQdkOCMcZU7Q/v7En31gDjJlQ/8977G5t7azPTA66apEn2xdHKTxGUV1wcVt/acgSHjjVTitCHfvKP/kiUbH8Ap5s7sZsY/MOmL7DilV3YQzlQOBTA+580YvbUctJEtthv3rQxCFDHbcNHJynVCAnEY3JgV240lXhLG+TwMb/AIdvbLRMzuyZqeBUtFKu1MLo4GwmKFZy4LeTImeTo2ZkhYWoRShd6qCOhk1OXkTldU5EnNMLNb9HKjfjo1QdQVW5qYuVDs5BDWv3p73dhNNUKeeRr4gxmRWFY9MgR2GbEQiZT1xbeOnAFKeOz39tQyzNMUeyA7D0DtYQopSMyKTD5SUNUTmanY9yoPFSV5oox7gNx6htVEtPdxNjC5X+nimzA1iseW/wNrF0xH+eJwXYKeAKdnDM92SjgiRGipIRLJFTinSDC3CRFZszBfRIRT9BCAV3gP5MKDnufGBU446iOaGruwZ1PvoPoEBU0vJ4iYpbePgV/+c0duEKNg5Yr/dTz0dQgZli4b7hxwa0HYDjE2xqAnJ4yT8SFhzGWIpoyVWv2vDihVB058oHjl8mc/mFZpy5yrYVz6/DuCwtFyXq+tdfs7CnBy3CjNNygpxt2tsfkkA33cIcnNwK6krWYAVONlKmpgfycoEKmvmoEtnxyBg/9apOYruu8xkjgpuuqsOWl+6gISlDC1y1iiqNpJQK7e+pO8uNI3V3gNQPXNt0lqbTChjHjxh+RiJEP1VcX4q0PjuKpF7eJcR43EkT4zEmjseOVb1MG4BfdEDNie+iShKOT15sBjqlmopgGvFKXfUGVCiRCvfvJds1lO37sCLz49iE8/6c9Yg0HAc5EfXUxNjy/kBAqQGXtkLRWpUug0FAs4bPzEpdD21c8JqCYk2teqZzeYdzLjPXN4TJI1V5NRT5WvbYbazce4h7hdLW/VluKr9cWE2JFJMI9oMIZSKcgEyOYUwhjLqeumcBjTuyqjp3KuV1csPyIwzFBbDqZSgXFgB+/sB3v/usY8aALRjjUnmnpoveBlAKwawJfzti5iyjNqQsGpAjs3Kj5iXxpKZ68a91nOZJqymJOU0ZaQAS7zR830KukSN1XvLwTJ850iq62N2u1+43ERszfNzgY9fncXIRJDUpvU9WhxRaoTag1gTkL7M6yuoGmuc5v/2TFz+U9pgL6fS5CZebq1/dgiGLGSMqpykZmkk8YLuOwzdLuk7Kofsv1ExsuXOq02t1w1W37gIQ08D5bZifDr2Jm0rPrfx44tPblhPJgWEWp+PjKQmrRh0XcYF7fsu55bU6tmTZ9ztSyfXyY5zZKDEiJNK4/MGmerTHFeR1GmBorHD49ApG0bB8g+568L68CO3upqVyQcUi/be7kbTMmVnxxtpkCh1VguNJM4ZgyDnucKhVOM69WbEY8GncEZkmDSVpShEJ3vJVP/WNMrSn5s0jm1jwx5yneOeGpMf+FXjYL22ZdQuFBmeGakOc6cyCZD+Q9VOJV1BpOPDe1Fmo0zJs5du0vHpmz0/HtdZv+/cDSn7+/nrdURpXlURHuF36hDcvNYaXjntLvqu+Ho5G31lAKKOWd2cziT0lioLMvQb3ZIYwfFd76+d+euM1zKrB9b+PEF9fvfvPgkeYZPKnKyc4QDaj+3gi0YMCRrKb7HOk45OnqdpwojUyStyKNpN1G5L9WGghQh8IQrXnCcUJAWDDJ5xu8Y6e5XbggncsrUV56VhRlDDx657gVD99/88sKw95r++7DYw6f7pi7a39j0ciC9Lz6a0rTevsiSZ/fL4jgCRnHbT8nyF5Eh/H/j6ELXnQkmEkg/6HER4cHfbr4gU+nHz2ig4NEFBHm5/lPzClBee0QDATFJixp/u+Ojq6B/nB21pWa4sxjU6vCuydOnBiTaf0vAAAA//98FLsqAAAABklEQVQDAHH1EoUzyBrQAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Context Menu Search&lt;/p&gt;
&lt;h2 id=&quot;网站体验优化类&quot;&gt;网站体验优化类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#网站体验优化类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAHVklEQVR4nOxaaWwVVRQ+d+a+9/oKQimUioWgCRBBQ4g/jCEEDCbGaEwwqJFFQTFRFlmKC0sBWRIjVYL6S0lUtFSwmhADSpTtD4pRUiu0gAEXrBBK+wqU9m0z93rOnZnH0M70LW2pTTzty7zeOXPud5Z7zj13qkEfJw36OPV5Bfjl1sQ9358+Xzzv/f0ycrVVDZr40fETN7wfCnG8h9d+yNQa9+dx5NDVMNLzxTPgMQ0TRg4bBBWLH2Jjhw24yE9fiJR9eLh2WsOVNtM0BDIz5Za4IQHwF1g7aTiWNEioBgnDvi+l9XFRPAkQRFkChw1TeiNT99CKuobzCQDhPR/JovkEzmFIBvVNrfDxwTp96SMTdvMNX/yofVtzjhXkh/jkcSVQEOZKRswEX9KRoTUagwO15+FKNAmTxpbAHUMHoA4OUAtFSLcwJUxnRLbDxgCxQxA/ceQhgMxrQsYgD2WRHS61xOFwbT1UHvkNigvCGj94vB4tasITE0fDmun3gqYx25rMVwGUB1ejCVj4wQHYf/xvmIKKL3l4Ak4gIVtSDnRd0/FE0e3ztx2Cfb/8Bd/V1AOPIXiGiG4dGEaXa2CSzxlLO3G/UADy80LK6lHyMT7CssefAui+dsaDgQJD+ofU92vxBIYf3iGjiyytJ9UPqBhRz+YIPluiqWi+gAbK8DxMmSQpcTC91f0JFz4K62kdHIS0FihSwgFMABS3utYV8OTKJFxovqYE+8WyM4Ns970Dny2gs3URw6xAmA00PI+alF/xS046SBV/e38+C0dOnVeTkRwCkRQ3cgY0plzvKEkhQDxugDqFBC6kuP2swoQfwyWLhhqvtKlrAh/mNGQIyq/ZBQAJyA9yGJgfhJaYAZejLalxAidsuQ54GkkK5gJreV4pIS3wAU2qlCtcc7hlqb8x5GNJEwubJYs7rNlmQI1pMP/B8TD9vlEdsi5T95lKq4x+vJIEOU8j8ExlMid9Cw9ZtFiFLYvY3vumBg7X/eNWoPMU5kUEauzwQhjHCuFmU9XRM6nKn1IglwxyM9Onm6TLm9xBwLJ1QS8Sc8ULlQPAApxjFuodIryanfpVIUtibjOE/wMm7oVNIZTePICbPdZ5G8Fsd0rZM/FFGYlSfxC3EZwsHwP/KkpgKrZ/BIcO7If+/fvDomXLYdxdd4MQwpOXxvd8tRuEKeDRaY8Bs1INdCeRNDInYedtplXE/Koxgao+dgz27d0D4XA+PDX7mZSF2/ORxb/8fCesXbkCFTEh2tYGT86cmdZj2RLVDA3ViGLPopmSions1EqaZgHQue4Lnixf9VklrFu1AiJNjXC5uRmO/1qDnZgJ3U0UL04Vt+sHAzPXrbBt+aqdCH71CmhqbFRjM5+eA8tfWwnBYBC6mwwX1pwLmXqGwKPld1XugPVlqyASaVLemoHg127YBIMKCz3XSncShxzJCZtdOypg/ZpV0ByJgK7rMGvOXCh7fWMKPOtCgckki+VUiR3wOys+VeAp3mls2vTHYXHpK6Bho9vcHIGcCcEEAgEI5+enZeVOB6lnmCjIngbWhcpPtsPGdWUKPBGFTt2JE7Dg+We7HDamacKkyVPg1dVrlCIdQGsstXVItZSZuoDy+qmTdbBl8xsp8M6kJ+tqobtoSFGRFUKMdciQ0qulzDQL0aIdNXoMzJ77HLzz1maIxWJqXNN0uK2kBEKhUJcrMB5QQcnwEdb68ZBFWAW1lLqrpcx0qZG4vLw8WLhkmfr7uhISpkydCouWlqr7XVGCHg2Hw7hN8M4xzO7B6cCMx7FLYlKoNZDplASOLH1diXJUIopVeBcMR8vRdqPrSkjf57kmVbNkt5RWz4lbl6xqQUcl0BPRKGxFZWjeRctKuyWcvEidQtpir7eUkD15KoHh9O6WclzsTI33hBJuaTkXspQwHyW2lr+pChuN07WnKCMFHAtSBvLKCm4liGfr2+WqViTi8R7rCRxKuxciALQtGFpcDAMLCiCEi9OPTymBWUhDi1MTtAAVokLU3Uq4c6ZSAHfJvlmIJl9c+jLMe+FFVW0LBw9RRctPCco+L6ESSm4PgFdymbyxpaSXGUYnWYg8UDh4sPqebptAgHU7f/dYS0lnSk5LSb2KmSaBdpaTe4NuaCljSetEoovnuzeVqKWkPRy1lJyiWQgJfQW/dWwp1UmKOkymQael/O8EiT8RRvfJNw9jprgmEvB19Z9wrrHF3qbabyl9uilaQPTWkHh8lzSlVW4dGtOJs5+L6ZQ6iCkwhlnELw5on5DHmUo0eDANP51tUNv6W8JB4LMmjxFVP5yR1WcbzOrfG/DNorQmFcznpIIpF6rzfclU+IHPtEHdcnPS9H/toWtgvxNg/icjaEjCRW+RknYGH1F0iz5j4hjB595/56aaPy5tO9oSkyFuCSVZIXr1aXhYBHkCyBPH45J+6IVWWk0eL6jVy2l8XufWUaDhI4umJD718tzw9oD1ottauJYsgAkji9gD42+/2Idyjzf9/88evU3/AgAA///W2M7XAAAABklEQVQDAA7+eXEwGMGSAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt; Save Chrome Tabs For Later&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAMSElEQVR4nORaC3BU5RX+7t27myzZTbIh5EkCEkISMAYiBgEB7TAIFShi1ZGOONhaWyUIvlFAKm+1DA8fFC3OWDvq+ECEomK1gFEhEkgEISEBQkjIg5DH7iabfd3bc/7NLhHyJGiH6Zm5s//rnv875z+v/yYyrnKScZWTgitI1z3+eIjeY0rxamqSpKqDJEk2AqpblaR6SaVHRp0keX7IW7eyEleIJPSSMrKfzZJleZqk4TYNGNHN1wokSdolad5P8jasyEEv6LIFGD538VhJwt+IwzD0gkjo/ZC11fnrlm/zdXtGPRZgxNylcZC9G6h5R9txR2U5nLU1ZDAumJNSIOkNUPqEdJctAdGOqMDM/A3Li9ED6pEAI7IXTYQkvUfNCO57mpvQXHYKthNFAnho6rUIS01HL8iqQbuHhNjZ3Re6LUDmvCVLiflz/j6Dbjh8ULRZ05GjxkEfZsGVIE3Cw/nrl73anbXdEmDEvEWLaenz3GZN1+7/WpgLk6zXI/qWKT0yl24Bk3DvwfXL3u5yXVcLMh9Zcremae9ym8HX5HwFd2N9YD7mlslXTPMXkZf8YurBDcs/62xRpwIMn7coWYJ0nNvtgQ9PzxQO+zOSHZpn0KGNq851tKDTTEyxerW/zfbeFnxQZNTPDZ7JpEnK8s4WdCjA9fOXZlJUnslttvcmijZt6RcAL4hM5IER2UuHdjTfoQCq1xuIOPWt0cZP7LDG2P74hYis2Lugo8l2BRi9YIGRXpvMbdZ+W9Nh6pN4DX5hmoEO/LXdYs7pNU2jH4OBbEipPIXB5iAo8oX3TdF94YIHVujg7WU5paM9QomLiR491MA4822iWStBdEGKpNJlTP7Ly75BdwQwS95pkZpLMLU56hASGiTGWQaVqpUwSwgxd9B2Empp22oYeiwIA48jaBa4CYQGI3HjX5ke5suiOKjnosdOq6t1+qk01LUAlfNnDFzmtQ2VKZOEuahUMMqIiImHJTrWt3GwETYSosXhEBsYaCsLncZpBIuNukOhtD4BTqEgFoDBBxuNiI6/4FeNdXVoqDtPsxLqSUkJqnPk9od/PcDyys7THQpwdu60VL3HGxejc/fjujA9Kws3PPYk4gcPuQRE0eEC7N/9FU6XHEcdbcAaPUNC1HdxxbAI8C3oS9DCqT2AeI+6+VdISc+4ZG1VRTlyd3+Jgtx9fDqJXkmXdO6R6cH91n9S5F8TOPeah6YPlmUtUZOkpO2Jo9ZOuWe2KSa+60hTsP877Nr6Ps45KNHReZwkfXZ0EqzxQXRuUWQY/YwGTLr9TmSMGt3lHizIti2v1d9x7shTkqadcCu6k7HrPi4NCFA/f0a4x+vNoF6KMXNCknL3Q08EBRsDwh05egyf7vq3aIeFmjF50kQk9u//kw1ef2GF8Ac+jUL0ucQn+IRS0YxI0nycUcG92Y+irYLKysvx2a4v0Wi1iv4U2uPaoWmBeWeLQ/O89+qLzQf2HCfrLlF0ugLLuo8bfAJkT81wA8mGyNgk84I12bLZEs/jhccKsXrlKuTm5gYYaa1Xjhkzb8fCZ55GaGio6Ofu+Qqff/S+OAUbweVTYBNhaiADYO2b6WHtT//dfcjIulHMWQnwqpWrsfWjrVzAiSuN1Cp71qgsPL1wIVLTUkVftdVX1D87+wUqks7QupPRG3cUSH7tU6mcHvbA4tsM6Vki/pcUFeKR+++HzWYVB6WJyxJFB5LAr9vk1FRs3PImTGaz6G/b+CJqS44BRhP08QMRHtFXOHuLoxn2kqPkISr6Dk7Db7KfEOvtNhvm3j8HJYWFPobEWBLbSGJHHjAT7/VbtmBwik8I1+Hcz2xvLNuhadIRzRucp7hdaqQkq2EUdWTD0MwJfk2/9OSjCHY7EBysF6y0Vs3o6PFQjPPSQH1pCd7dvAl/eMwH6MaJk6GSQ8amX4/2qPJwHmTFEOj/fe2LaCAeEUE+xw/SURAlvl6fLD5FEYZNy5bipbdFQQz94GFZBOhTaGoYGVaMotepIR5NMgVff3M8dIqRF+V/vRtaXQ0ig3QCeF/aIDJYQZAsBS6tLlVFdYsH3330LmY9+Cf0MZkRndb5baytYM12G37YtRODTAbEGPUwEvhWC4Kbkk2d04MaenjAdrpEYBo+7mZIxpAIxtp8YHc1Y1c0TTaReRh116QFPKruVAmBV4QKkikLD6FEZnWrQuua1qoa+s2K1KHU7kTViWIMysgMgCs7lIszxcdRfOwoNK8HyXT8CclDMCDrpsAafmdsVIjI8la3N2BCQst01Ga9jPJmNwrqHGKcMYEEYBJYyZldpHjFK2mcACFbIiP8zM8fzRcC9A/RY3xUiODc5PGiSezjk0BPxhpm0BEAA6xH8+j7ik+AL1c+jYPf5KDY6sSxxhYxlhb2HySTEkZNnITxC5aIMevenZgS7/OdepeXlIOAZkLoNEIUCUkknEmRUUS83OerA8L7scqEXdFpksfD6bu+ts6/IGXESHhO/EgaMgUigkmvoxdUMh32A0n0/c4c3jcywHzf93koIq0VWltwyu4SY3xyHjILOS8f4/3mlDKMrkr7RZtN1N56wgZZRh/lQo053GJEs0dDbFx8YMyPlbGT76p2smyHWnv2vH9BdFIyksg2lYvKG2YcTlrn4207ZckcK35bmuw432hFs8qCXvjE00xeb6UTrDhbIdb43hkTmGdezJN5twXPxEVkIlkCY/KT99SxcsbM2GW3V26iY7M7dm8rgdfjEAKMHIvYsO5d0l2R8TDQ7YzpcM4eEWYZMD9tBXB6ff2SfN/dwhAZDXdETLf2YCyMyYfe42jJ213BmBm77PFoDZDkRmKvuo4e3ON/KXL2AmhdVJgahcTYuc8H+t9/vgM2NgXVZ9d+8ts47Yi9H74TGI+ZtwKqou98j1YsfmKMjJUx6w1yrRy3eXst6Chorsqx9Y3dWkuzsC9j5jhEzF8FKSi4Xca6frHot/g16PpGtYL/l9BuLYW+6hb3JeurHR4xx2uOfLPXx4PejVq8CbIptN09ZLr5RcxfLbAIYewNFYyRsVLkaeBSQlRdz4we5qAEYlYd9hDUnSvVUkaMVeh7jy4iCiGT7oJ+wBB4G86Lvr7/IJhm/h7m3z7IMVkwPksh8R/LFqHK2oxG8vITNtclHzntZEYRBgVk6jh9MBdpWaNhpkzNPPpMvANKTALfYyGbw8U+oXf9GeZZ80SbyUkZ3fnB5k3Okz+epTxdJuuUojX7ClsCNsKlNOXIOK8kpWxPGLVu6qzZhuhuVKOszXfWPI+qugZUOtwooZDX1nzakoXDLoXT/n306GcJxz1PLcG1Y8d3uUc1FYs7/vmWa1r5/vk6TStSVaks6tVPSnjuJ0buF2KtnLCT6pagMeMmIJOShyX6UmdjrX/8ylqf2bT4zOMUaZ5/OyPOL9dQ7oil7Mt5JP2mCbj1vgcQ1ybK+Km+ugrfkmkezDsAjya3zNPO3EaB+Wzcy9sL/Wsu8VK+FzypJP1A1aPRWHUannOV4kJjNJkCaypKiuGgUoCjSw3Ze5Nbo5jfsebbEyIxxACzQRZtDp1GKkXiB18Qoq6qUjwK+ZojZgCaNF3zGu+JDL/mOxSAafy8hfYouENQVgxvRSllQ98FhQs5jiZuCpUcUbjN2j9LKd+p9uzTPtdVcWRKXGPpqW0mIfgay8JwyBVRi3KHjqpaJCajRjPY925cab6YT7v3PxsUzcZfA9hFyKYtBuUnAohK1EkXfhKip8D9xO9xpmbhzZTVLVQ4cob378FU7yJz7CvRDcPIFUG7G3V6gXVQwLVS+OMQ+HMRC+J0ejr0nVDCYOjk/av+r5S9FmDM9BkYlH5doM/OeMvdsxCVkBgY4zaP8Zyf+B1+t7fUqz+z3jp7DobTDYzpzeeeRc2ZMsx4KBuJqWnIunUKXvrjHDE35y8rxG/MgIF454WVQqA7F/huceZwCz5/601cLvVKgISUC18NohMHoJaqTQbvp8iLEiHPyTqdWNsej8uh/28fOFFwKNA+U1zEn+RRfMhXLmt8Zz5dKh5uM/Ecr+G17fG4HGrXhOjmu5LSSpASbBxojEsY2NHL+3Jy6DOVHFt1pszmVILstBaffvgBfZxq7P/jgQM11BdXsrfW/tUw7IaRUd9+8UU5r3HS2IevbzbFJCSa83JyKnmsQ4DBxlIq3kpVqM725nv9rwb/a7rqfeC/AAAA//8YZro+AAAABklEQVQDAKPFHuOTmgUzAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Dark Reader&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAP1ElEQVR4nOydC3QU1RnH/9/sbBaCFalvC1ofaPVYtUVINhHkoCLJJoBaFOsL8VHReo60WgtJ6EoSEGtP67G1VsEHWrWiR4E8FK1SJFkCxtOixif1KCiI2IISINnduf3uJihQCDuPOzuT3d85uq/ZMDv3P/d+9/u++10NObIaDTmympwAspycALKcnACynJwAspycALKcnACynJwAspycALKcnACyHB29nHNvH9I/T+8zGGQcQYTDhEFHERkHQFA//jgvdRBBAGIzgbYI4v9gbOK31gQDfdc8H126Gb0YQi+iPDrkECMRHCFIK4YQp/KPO4XfHgh7fMmX6R1BWMl/b5URSC5vjLasQy/B1wKYMGFCYNvJn42AIS7gO3gUuhrcjd/0DpF4CUKr36rnvbI0ujQBn+JHAVBZZeHZQtClfPbc8DgUGYU2AcZzoMBj9dVNr8Fn+EYAciwPBYNX8ilP4Zcnw5u8w8bEPQ01sb/AJ/jGCAwF8+Td9UN4m5M00JfwEb6ZBnKX/zQ8Dnenv6iraX4GPsI/foBgfC7/Pw7PIubU1cTugc/wjQAaoqs28PhaD08inhqqr5gOH+IrT6AG7UF4DSFeNbYMmBSNwoAP8ZUAztSbXuCHj+Ed3gwG+1zYeG9jB3xKAD5i6VKIwSMG9meX7UhknnWGboyqizZthI/xXTBI6GIePySRWb7UkjivN7iEfScAedF5utWIzLGDhDF+8ezYu+gF+DIcLCAyZQwa7I+4vK62ZTl6Cb4UQP57g+R08BO4DDf+1Iba5mfRi/CVEbiTtrY2ceLZgwbw07PhFkSzGmqaZ6OX4duMIGHQQ3DJGGQH1Pz66uZKuMT46MiDIpXhZ0umDVce6VQqgAnRkQdEqoqHQwHcFX9MAkugGG78JZ9v7Ly266l6Sm4uCXUmOp7npxdqgcTi8uiQfChEmQDYM6ZtS3Y8zrdqLRRBhAegljf0Tu0nrQ+0uhKDkNdM6795Pn07tBUYybwn5PtQhLI/vCpROIvvmXH8dHjJtIJToICv9VAdP3wGNXwk9ERk0V1NX8MlViXDv+OHi3d7k6/hykRhFRShRACRysIL+f68fedr0gPXQAGpVCyiR+A4tCkJrUQGoOASkYrwrdzYt+ztM/Z8zohML4pAAY4LoKwi/D0+5d26ZhLiqpHRkX2gAE0kZJjYyUDMdp7vjXuhpuk9uESkqmgit/KcHg7hOBgeOX/68CPhMI4KQI5VbCk9yk8P3uOjg/PjHRdAAYtrVn7E/+bLcIYkG5aX1dfGmuESZZWFI1lwj2C/bSEOCWgJeZyjaXyOCoDH/Zv49M7Z22dssF0PRWggRzyDLKSb6mpjz8ElyqrOOl2AFvLTUDrHc8uPjlSFr4ODOCaAru6Jqns45OzSacNOhALWb+yQF3E97ECY6WYyZ0m0YKAhjMX89EBTXxS4c3S06DA4hGMCCAbi9/JD/x4OIei6EmOwa5om5sMy9Nf66lgULnHBtGEHa0ntJYIYBPMM0BPit3AIRwRQUlk0iv3kF+3vOE2ISROip+RBAQGdpDFo2lnDY37jho0dV8MlR8+EqeG+nYHAQv7XfgCL8FBwRWlVYQEcwBEBBJCes4ev8GHtyQPHQwGLorEP+cK8CnO09g2GLnbL0ZNaydQPj/PTYtiDSNBdcADbAiivDI9nQ6Yw3eP5xB01YnZDCDOewTUBw4gsiC7dCpfYdtKncpi8EM4worQyPAY2sSsA4mjMHTDHOTxkHA8F9A1+JS34L9I49AuCUbJoVsvncAl2jlWwQqfAQdhBVAGb2BJAZEZ4NHe7p8EcPCMUSozBBdG2Tr4qj+7nsO1ENK6upuUDuERZReFl+5khWUScVVJVaGs4sdcDJDEVFmDRXD3k+iFBKCAptJ6MwQR/cHFddXMMLiG7aUH0MBStw2QfyG2wgWUBpAI8hNGwxhGHHxoaCwVIFy438rK9fSZITOG5fh1corSi+Exu9QX8VInYUwhEutzv1rAsAE3X5NTJsqp5GFBmDPJ08/88gwIi2lC9Yi5cIhI96zgiQ4rtAKhFF4TJsIglAcjpDF/Rn8IOhPPKK4cdCwVsDfaReXvfrNLlmcfchpoVZo1Vy6QyeRJJuYjlcLiBwCRYvBktCaD95E9kNY6jYA9NkGZZuT3BYeIdfDkeS70g1G8N5jlqffeEzODRAgnpmh4MtyAcV15VdCYsYEkAZNAEOAB7DydzmFhJjQIjYchhoCW+vf0St0q4yN9iJPPkMvYwXMaAuBgWsCIA7mqoBM5w1HcSHWVQQOPslrZ8PXTukrtXt8MdqF+i435plCETGLDkYTUtgLHTC2SVDruVt77BIFwLRbjp5YtUhqWNocS/kRaEE6zYVKYFYBDZdj/uhsCYst8UHw0fwzF6meugLG8vXZKknWP2O6YFIDQqgrMEhGFk7s6xCXv5ylnE98EDcGTT9EIZ8zaAwDA4jcDk1NTSZ7ADZhh7+Z6EV1ZYkWa6bUwJoLSi6Bh+cDwxkRnYftI6pwxLVxgbDZ/A467M6OkHryDE4Mivzxpg5iumBMCerdOhCoU5g05TGh16RDKBJTK/Ad6CtGDSVHDOnAAEToAi+G+X+sEYHPur4u9QQperk5V4Me3CvhVTeZfmbACi46COgEgYk+BhZAQzGTRkcOfH8CzClAfSlAA4oKJW9eRpY5COPCxvHp/j+fAyJEzdpCZnAaS62ztm6+C1VkPMSolUFs7mMf8KeBweAo4wc7zZaaApC9MKWkBhzqBFyqoKb9h1raOnEeYikGYFoDq2LX9AuYo1cFbhqe9FfFf9CX6BcIiZw9MWQPcadTfmvLpO8avhAWRxCyIh07j9VEnF1CLctH/YG9uKZeO7s78A0bUqiyKkQyrlTRiyUoeSVc0KkesM026ntC/yNtrhZoMc+3qi6FxkCJljR4GAzOj5LvwH8XQ17RyLtBt1QN/t2+EiBhkZcQrJnUkEodHiuj0vIFofaE07ASZtAaRy7uFORWwhcL+bCZw7kesWQ8E8ueGD13cm6QnZTmmvczTbre+Aep4ZFozdBJeRNkd74iC5wjhjQ49DmOqpzQpAdcGkZe166IpM1N5flQjfzd3+JfA7ApvMHG5WAOqqYxPakAiMT2X0ukyqQBOsrXLyHART5evNCkDVZg3rdCMxpv7O5f+Fy5RWhC/dT4EmX8GDv0IBkJICzZvZ5C9ZWLtqLVxGpnET4c/wl6OnR+Sex2aON/fDDcd7gA6NML5+VvNbyAByvQB7TBahF8GC/tDM8aYEYBCthnMY3F9dsbg69g9kEmGoLjfrKkmhvW/meFMCiMc7WuFULR2BX9bXxhYgw3Rv/vA2egcipOe9YeYLpgTw8pzWLfxgqovZO2ION/4f4BF4GPDednTWePf56NLNZr5gxfh5HfZ40mubLOp6SFYV2Qa/I6gFJrEgAGFni/SX8/UtnttkUd41PK75as/fvULC9F5GpgXAUTKr27e+GdRDE7pjCp5DE4bvhwFdJExvoGEpvh+pCr/NRpyZPQBk7f0iN8uvWyFSGX6TH06FD+EebHVDTcz0ug2rDpCG9A91v/a+VYQg3/YC7E8x0Sa7fA9WMJBuRe1t7JgY62btfTtQUpNVRVzNe3COwFOwgCUBpOrpE/a3c6asvX+5myXZ7CJjEaKrqpe/4EBaXfXyf8EC1n3gYj9btRBudLP2vlMIEv7zDAqaD4tYFoDQ43LuvNfUIwLdUV8d86WLtbF6RRM/ZCQ2YZGO7rawhGUBpIy6ruXRezKvrqbZtZJsavBVL/CUHQPbVhiUDNy5+xuob9dDN8Cl2vuqCOp9pDHoC8+gENofYQNbAuAxfqXcWbP7pasl2STlVUVDoYBuf7r3jUFBLzXUNtlyzdtOhAgQZqGr9v44F0uyIVJRON0QYqGqOoPch3l+GDBAM2AT2wKQ8Xxu/GI3a++XVYWvBFENPz2yX2JHKRTQvXWcd41BwsLG2qYVsIkjqVCubrwwI3y+EJBrBrrc2EQKS8t41hiMa9BsbxYh8VUuXKSqYAj3ezJq9235dYGS7uJVjtMRj8v5tfeMQcI9i6ubHEli8Y0AZPl1CE1GIvdcoq6xH1zJauLuBBivGYMbOjo7a+AQvhBAqvx6PPki9lF+XUBco8oYJCLXNpNMB3av39gtTEfwvAC+Kb9OPVYoG6jKGOyOZfwTXkDgIafd654WgCwYZSTznkAa5dfZ/aywtIx4CJnnIyNoOL56ycsCoPaT1j7Iqh+XzsHskCpRVWfQA57BDu76JzZGW76Cw3hWAJGqohq+q80YdwEkxWQoIOUZFPQ0MgRHKH8uva5QgCcFEKksnMJObtOZw0qNQS0znkHVtRI8J4BU+XXQvbDGwAPiO5QUnc6EMcierrptwdDNUIinBCB3xBZEMrXJerVQhZ5BIsyDSxDEis4d7RNVB9c8IwDu9k8mQTKxMR82UGkM7ujsdMsYbNX1PiVuBNc8IYCx0eKjWPONcKYqlzJjUDpg2M74GxQiZLESHaPNLvGySsYFIKtyJRKGbHzH/PnSGFRVdFqIgDJjkMf8V/rpoVEvRmP/gUtkVAA7q3JZ2IF8fwzcfuJaJZ7B7hCsCmPwya16KOLmTmcSNckU6UGyKhcbO0qqcgmNfsYPi6EA7qbnsmhtpWLtgkFCTKurXXEXMkAmewDBkQ1ZnUNN5TGBMeMqhiop9tgZ75T1g20baCyijSymSKYaX5LRIaChOvaESCblnrcqutRAkoJKtqNLReME7BmDAn+PG/oZDTWxF5BBMm4ENsxe+X6+vqWAb4eZ/DIOB1FqDGqWs4W28olNHRqMjX5x1mvrkWHcqf6dJmOnF5yW1DS5QNOxvQl5fB3LXawSW4B9F9xzUforcgn1pGk31t3RpKLamiU85QlcNKtl9VA9FmaP21X88lM4gcqcQdLS6wUIbVKI9dWxMi81vsRTPcCujL71tH7BPvm38CnKGPjBsE5SF4ljVdQhlD4MnsZKoe51Iw22cteCjJn93h308IIFC5LwIJ7drnVN8+fxD5ate+2MUSfcl0gmtvCdLCt4W9myRhMU+Or9ZWuXwmH+3bS+48Thg47n2+hHe3z0Fvdit23Y2Hndst+ver2trc2zK6U82wPsiXQabY8feIFBNIVP2uwmyevy3xv4fRV3oQxgcQxDOodk6ZtFPKjOrZ8Zk6ulfLE8zjcC2JWyyoLBAtpEPvuJ6ZaqUWkMsggmBQLxusXRVlOVur2ALwWwKzKKyLfaGALJ/QZHYB/RRBlbr6uJlSPHbvheALsit3Y9/NA+p5MmhsHAUL7t5TaqcrNLuQ2docoY9DO9SgD7QtoPHeh/tEDnZj920yrJCgHk2De9pk5+DmvkBJDl5ASQ5eQEkOXkBJDl5ASQ5eQEkOXkBJDl5ASQ5fwPAAD//zKY5o0AAAAGSURBVAMAJ4QzRZ9mn5oAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Don&apos;t Close Window With Last Tab&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAF5klEQVR4nMxaWUhcVxj+Z5y4VCukcV8QHS24Fbdp1WiIUh+K+tDiBg2WNg8lNNSANU8J+JTi9CXtiy1pE/oQa6ytUCkU0kRHURIXogGjoEZcsCpaUdzXnu9M7u291zEzd3SWD+7Mvefec+//nfNvZ9GRArW1tW8w5L94MVzC/j+ZmZmhvb09fm9jY4Pa2h6TI5GXl0/su/xco9FQREQEBQQEPDt/Pvu3np6eb5l8a9LnNfg5PDxkz2oOm5qarrS2/vnp8vK/hv39fZSTVqsVH3Y2AeDg4IDL4eHhATIvCwreN5aWlv4gyKx7xfTw9u3vjA0Nv9Ts7OyI7HG4GtIGnJ6ejrl/v+F7JqueyXad38dPc3PLFZOpXRTeXYEGhYzt7W01jY2Nn/MyplN+s7P/PGfsoq21uCtU6DicOxfQq9dHX9RmZWVVM0O1KDyMF0ILx9raOjka+Aa+tb5u/qbgQJSAncLZ6Do7uz6CwcJIpPDy8qLKykoqLy+TlcOgHGUbeHdv71PxGgbMHAs7fqXt7W3Zs5AZntIjPj6+fmVlRSYUWF+69DFVVJQf+YgjDVv5blwnJSXhjPr7+2UGDbJBQUEpmsLCokNcSIGue/Tob1kFV8OSbeh0OtIphQdQ5E7CHwdois7SDTdw/zbD/ZvZCnQqn6epqSkaGBhk+mf2WvAUISGhlJGRTvYC7xgcHKTZ2VnRkOFl0tLSKDw8/LV1VROA8HV1deTt7c2voYc5OTknIrC1tUV3796joaEhkcDm5ia1tPxuta5qAmh5CC8lcObMGToJ4OMnJibIx8eHX6NHwsLCKDg42Gpdt7CB4eFh7roFoFFyc3Nsqqu6BxyBjo5O7tMFgEB2drZNdd2CQHd3t4xAYGAgM94Im+o6RIUQHKHHtmBsbIwlbuui8aKuXq9n9uBtU/1T7YHV1VUymToIw1C4wZCQEEpNTeECHQel+oBAbGys6CSs4VQIoPUWFxepuvorWlpa4sIDSEeam9+ky5c/o4KCAot1+/r6ZJmwp6cnI6AnW3EqKgQBbt36mubm5sRxtJBLoVfu3PmRE1RiYWGB5fXLsiwUrjQu7m2yFScmAOEHBgZ4EFKOKQChd0wm05F7Y2PjPGBJ4e/vz2JAKNmKExOAgBBCmDnY3d098gzU4smTp0fKYcDSgQpULz1dXUQ/FRWC37558wa1tv5BRmOdaAMCQBK2IQUEBwHlQCo7O4vU4MQEIGxcXByLnLm8F1JSUighIeEICaVbBYHR0VHxGnUxjE1OTiY1ODEBfJjNnPFzoTWhx5YGSlLMzc3T/Py8LPvMzMwktXBZJEb0lRq9kNWqhcsIdHR0yAIY1CcxMYHUwiXZKGZBJicnxVhhTh9iyNfXl9TCJT3Q1SVXH7XpgxQuIaDUf5zr9bEWA6E1OJ0Aho9S9QHM6UMs2QPVBOD20FKCANK8R4BQJi0XWhfBS5k+gEB0dAzZA9UEMNV37VqVKNDBAab4AmXPFBcXkcGQITNSHx/zrNr4+DjvBQEIcDExMSzdsG9crZpAZGQkP16H1NRUi+Xw9aOjYzxoCeRQduFCLtkLp9oAWh7pg3TEBjK2jn8twakEoHZ5eReZ0EJeZM5/7HGfApxKAMZaUVFB9uC41EorDefuCqibpQlneEQt1mGVqS4GIA8eNJG7AKs0kEkKyAzZPRITk6LZtEaKdGABDzEyMsKNDbm99J6jl5iU70ZDgoAyPQcBln480xiNxiI2tdFqaR4HLg7LmqiL92IBTrqG5QgYDO+Rn9//SR1a/jg1v3r1ixs6Nif5+OzZt3qXlhYNygf4Eo6TbQTCW1tmRW+wWPQSWw+0bJ14o7i48J5Sx9wZcL3YcoB9EzwclpWV1efn532DG9aGgq4GGhqyYr8Errl+vNo4cb25uWXi4cO/aqanZ6IRIbmbcvFin9mFmhNIqHph4Qc/sVgibvbg0uEE/yUlH9aHhoa+U1X1Za3B8O7zqKgol274gP0h0WMLHT+zfKkYWwsgvFTm/wAAAP//pYRxSQAAAAZJREFUAwCywapkj0PgKgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;HeadingsMap&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAALYElEQVR4nLRZC3QVxRme2d27997c5MYE5CGPgIIFgUCCD7THU1F7jo/6rKgNRwWktNYW0aP2cY5tqq1Hi3oq7UHBEkLwjR61Wq22FXxi5VhoorxKpRGBhEeAJPe1uzPTb/bu5k42ATYQ5pw/89+Znd3vf8z//zMxyAlqs2bNuppS+hOwW4QQ99fX17eQE9A0cgLazJkzkwB/KdhpoAvBn0NOUKOkn9utt95aDo0vA12tDHeCfrx8+fIVh1s3Z86cK7FmLoRtAf1u2bJl20iIppN+bPPmzRvKOX8OQC4LTJmgq6ZMmdKxYcOGtcF1cLfz0b0CmgiaivWT8eyreDZ7tG/2mwvdfPPNp9u2/Ro+ftFhHoFi6SOzZ8/+dW1trRaYmI4uoQxN03V9NAnR+kUAgKrGB18FexbpDmwVuk3qEOiXzc3Nj82YMUO1vhl8p+M4obAdtwDS/ND6S2DHq+MY+31dXd0N6G/Azy8Cy+5IJBIr4Pcl8oc0TWCeG4bBSYh2XAIA/CX49vMg1dwCdH8qlbpb8gifTYyxa8F/oq7Fmplyv9TU1JShZ4FX27CARUK0YxYA2rteggd7ijLMoPG7EW1+tWrVqi5QDQ0NWwHoKrBvqe/A+suj0ejTmqaNC7xekJDtmASAz88F0OVgS5XhNMbmQeOP9bZm5cqVezBf4wmttsswfl1gLHR477MA0PwCdH8AFSnD+0C3AHzdkdZi/mAsFvs+2KWBqSBgG4IyEqL1SQAZAqGtR8HGlOGd0p/hNi+FecfixYs7Kyoqbsd7HjrCYwxuFcqNQpkKIc9E1HgYQBeo4wCxHXTTihUrPiLH0KAQudEfBEUCU63Y+FOxd3Ye7R1HtYAMdcXFxUuD4NGaoKVrjhW8bLDaI3jvbWA7AlNJ5JXvhnnHEUsJZNcB+MAysN8LTK3VNPvGuroVm8hxtvVoKBu24Dsyg/v7Slrk29XV1XL+/SOtP6wAsq6BezSAvUIdp4K9G2Hpm/5U//x20k8NNc+m8ROnbDB0eiF+Jr1h6R3Tq6qqSseOHbt648aNLLQASFBjkVxeAPutbg8L5zUrlpi1vK5hF+nn9nnjhi9Hjqt+PxYh52NjnqxMnWuaZsWECRPebWpqygXX9RAAPj8ZnYzV1YVRSgxmrdSiRbOXL1lykJygtuXz9bumTZnyToqRcyIaHaZMTcaeOGPSpEnvNjY2ptQ13aIQNH8WNubTcJ3T1UciPPvHA2l7gcyuZQ99MDLBM6M1IUxGaFe9ohuaxhm3eFF8+64F53/VG8C9L187VPCiMbpgMUEFJ05+3NE4jUJFcf1Qc+y6v3w5d+7c4akca4gbZHoglq5GRp+FpPhVNwHg7xGUwrImrweNUBYIXdi/GT5qDCrgWj7g0bW3pQeW3GGVJL9BdBjP0CRy0sVrGol1praWbNu2qOXAP54gWKOArykpXv/TSKS1knAMyxlJzO8pKtCB/zOM8Us0q3ThnLeKyzMOeRJCXBvQw3q4twzdboHoulBlZWUNuoUgtShjVIifLatv+O2aNWvEyQ9/NPvgkLIlVqJkINEo4QArDB0Sggwj30MYu7R0QGbwoMsG7itqTr9dt0G+6MCLM64sHfjOsxGz9RTKbdjNQTDwiBdIF+0n8VzzxcSs6Ljm5y/+/bxpZ7/hOGwIIpTizmQoflchQu1AhPqvmwcwIEvhkcpDGSHobXX19VIoMrj27UHphLnAoTrVsllCLYtQG2TZecopfDpDWDRKDp026s7hj/21/D9vXhqNlzbdpesdEddlmKp16T/Kb/A6BHHS6+dnXvnhqKVLl6ZHjx41D4pcqJoAeMf5bu4KgKz3LAYbvPlm0GyUNU/5CwxDO9Uy9DMIgBOHuURtkOSZQtzrIZCVTI4vs7LDhmdahkT0/ZXdgHNFEBYQBBRx9o/IpNvOkN+WrgtF3gt8kg5gKCvPGtgLf+4SQPoT/Go+Js7FJr4YGfIFVWLhsGLBmEEdfIU5eSEkUCkE88YYK4zLnhODRrSEZWZNuE1RN+37gJ1eLOHyDjq7TMWAw9FCYJRh/ZvA94C/kQ3/AVSK8gDd7dDRZQHY0NU29SoPufUdLz7IXni88Eh3PG3rgnAqCEJO17y6cYUCWp1zedHjRCYPRz2wkRDNTYFcalsjEoqQAsjt750E88GU4rteVMZz+UV2/jdXXhTcA0HeFyBkCyWAEIhx0jUkYGib2gWlFz5G89NywAbDpTAoaXKkkC4d0nMD88P8plqoSjmUAJRoSDreV1zNK8iD7sSFmw+kAJTjhwZ7cew1310O5zbqb9e9aCg7hDrQUE3sRZptF4x7EQdxm3lRSI1EXZGJE5rNHdI5b9P54A7B4q1dPh+0Qi9hVZC4I3RzRxhsoQSI7aVb4469WnAlyjieILb/28kTzwuZaGtbQ8tbmhMbL9iTdUb8rVvkCUajgDA5c8THOtcaw2ALfXiuuO/Nqn0R/Zk0cr0sHagsIbxSQmZhEjHczEzRF6XSm5O798zcXXvJv+TaPc/UjC3WP302xradSX3AqiUUASxz+I5Uybk15bes+jAMrj5d7g54cPU4JviPOsxYJTPjcdiPu/4uSdc0nbFMSbazUc9Yi/f/YvpmdW3m5ZoKmmu9Pcr3nomIloCP84LPy7imWZyWbM4aI59I3PL8+rCYjul2WhZ/V7zxWUQ9FMjLode/M9VG+rePtLa29gLj9aFbe1wlDsoVsbfmb8uRPrY+C/BxMlke4+1Dkp1QmTIuEWWLCW/Xki3ntbe39ba2fNGYZJtuDyPpdr3rNlS+RJc4YBHD3EPmt+wlfWh9EmCdqd9YlCQL9BidhLoElZ0st70XIWpqXDDbEk0dB8jj1RZ7Tl2rLxpyuTGo/F4jFp2KZ7FhEGJd92EyqVCZeVk2t9npSD9p3777KTcv9qcAAH9dbIj+jBEhpryxkWlGLu7qPV4HOTax9+9kM6ssJm+nifHksItipwx+RSuKl8hJid3NF+65gLk8dXlsC9sm2X2dP7Dv2L00DK5QYfSf2L/6Sdo9SKymW3TynsS8XkZUCBkpS9J7PynHAb0Wsaqs9B6tKFYiUM0KJxB2vXAsnDxJU0aKzXvIw+XDw2ALl8gi5FRq0irB8iWEG/2ElzBFoYZjXl0nezNOJx8S5sj4yNOGajFzar5C5V625d5CzwpMsQie0zQ6xogaE8JgC1dK6EYp927PNI+kEO7lH833vjvlC7+8IjUqinnUzFF5VeKaSvRuOqHyeXfCOweGwRbKAn7BLAJaD1rAJ79q4HIjcgv1HRD64IXaCw98L3Muc/QWygLEBSWLZbfclOdvonvaZ56EshKl3pigSrXqq8DXuA+yhzWEt6FJ3hIhW7jbacf3fdGldX8f+MUlV/eGKBwBojlS2OHcLwb96OPzHnjm9cLdK6EiZOjr9YILCXJUd1IOaTAVHAnOxHnBXXpzG/cFimuFzAPhBKDOfnwj5bsGUwRiCnC3HvNcDBhS3NIOOp12CmV2W7dYq8T/Qp8fl2W6wOEXQ6GuL0MJgNyzBXcBH7jAXMCid3cShQ2cTYsPR3TktqcH72hl6ex73YD35jacdVkEN3yfOcRq6jcBzkMxSTqcB2hKfC3kYUvzNqo8r3u8PEEKL8Zaaf611UHunygrnesJs1OZh1gqs8V9WT6e+X6uuE2+Z0wcZEK7j9zVez0VbH2qhT6NRM7iCTJfREQlFsZd3NSNTW460OSFmEUamUUWnZ2216lrzccHT0SKvtMwtWrqltNeaM37H+49HBt3Wl/gVLrYuWvfe2ExhQ6jshXZ9r9Taf1lGqV7oPtioGYydnq7TUdZ34lz8QdladbjNGUdaN2sl578EqWR/ZQL/HcTed0NVe4f5DyR5Vxb6xRH1vUF0/8BAAD//0qOXLkAAAAGSURBVAMAxmGJ0MDDinUAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;Speed Dial [FVD] - New Tab Page, 3D, Sync...&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4nOx9C5Qd1XXlrqr36dcftRpJjYT+EkgoYP4wImDTQjHGLEOWJzbjGHtiM5PxOMl4eZyZzKwJiWE5k6xMVhJC1rLHjh07XmOcOGbisY1tMMbCBgxESAhkC4SE/qBPt/r/eZ+qmnPuraq+r7o+t+q9FoJwtJ5ev6r7rXPuuefse+6tAnLQwsVrBhzHGTAM4wb/muu6A3iLzhjRs9/m/03P/jHTNLeNDB7choxk6CZkptu2/WmqeABnIdFD4IeCf+nEgsECMXb68N1a6dMSLDhn1d309em3HvAbku5JE4RYjnYvXDFgWdan31Lts8SDwKc30mCg6XrLxMjRbVH3rKiLPOqpg1+mP9c03XDVP92mW6/nA8nKGD+9mjbqWvheUAePG83u5tWcantiy3CbGpVUxkc6Ohca1enRbeE0cwTAV/mIblVsheEGtsKUJGao6dW0YUrKG3WPr6W103Blt10jvpym9nn/eLDoCkFUf9LyqoPRCDFGyTsQJQRNqbsXrxgwHfPHiCNHVuSmMF+kcfU1RJa0cXnC1K76mgTZ+5P7n9pG5VmFNY3/W6cPOoNBLSsQAP5tSE2l1kN/N00HplpIIvNlK8THr8QfNWkdURsY/tsvJ+rv5KbEj+KsKpfbk6RJdARcp3w/T1N9RnI+3f4E6QyvTDN6mqI0Tdo9mAI81T+ApMYgmlFR6l9XBedRea3ki2uPlhYw9IRMpPcZgbntMpRBxCrCNYxEkyJvv2JojToVBCWTAOiLdApFjfA4myCP+lfz5TWwsqhXJgchdZlQtl+mmPsRpyFNcZ+Zb7rhmpqpHQIQ7vP48BFDtgLB6M9dcNJvlZJGju68mKSus1BWFW5krFOU78bXw2x2C2UYtjctmCYcnq8NI/jYkL8dtIfUtrCbz99CAFRINytFqbeoiqOmibBdoGWJ55zn48rQnV/bSUIvuMReFoANV9Jv0gY2/TYtcc8nnp+ZQYZiQ4TtCV0K95kxHnjl58bx2zESw+XFlZk257fSFp28OjZCeJqL1Xas+pnZ0yOwJ4ZQ2fp+1Du6gUaDhKKDEljC2HYMEgxXMe7aSD7PLcb46cdHkJGyPPAoMCOvkahOFXm1T/h+XN6odHkoVhgKRdinT8K2LfTf+h8xcfhFGJNDQLlTuHE+hgA3mv+taqZKV99jVqljwUeQYP37lOS/6qrROEMwKY+2UciPy5hta6sU7mu7pwGDlS+NbrOjE41Th1CfGceyD3wKYy/uhDk5DJQ6YDjCCqCUhkT9Ql5Fq22ivh2yyCXguWCNd0F7ZLaLIsv0XCjVgo7z+4NvQ46U+aB2PfBmcj1AjRhcWYD6sX00AzSw/M4/xPAzP4JZmyT9XKJuOZ6rKKcOtU3hQZm1fZw+8GzCBln4d9T1dtAcL0IYSPIT1YaovLJdRpMBFVtfAM/qpZ8t382l+ZLI8L0LexqFhYsw9fT3MLrjO1j937+AuishGpeEQFqC0iOIa1vc7zQyaaWoyQJvpbBWyWe+LjNV8oVmDk4dTgcpLIZrNiGa2vUo01JLzyYQcodcQRrltZoQgqEHvozG8Ems/ORfoVadJi1QJIOxQHXKsWr72RMGhC4x761ypfcrOEvIUP6Xf2bpUDBBIn0uyFtHO0ky1PX/ZwaT9W8VLIzufhrL7/gk0GlgcvtPaYro8YxCCIGJAqR0DGKflGl1DQvA3ThLSKJnUGwAfXK9PEByPhcKXp6xDpVaNsCU+oOmM2NKZTRGB1GfmsDaj30GYy+/iJlj+0kRlKUQuBIWMpRC3JDQZ2lbJLrZbgtdl+RUJD9mxqJFPsi8ielcBOmMDMu0UW3Vb1uEARtYIdIOMBw29mwxFZQ6F2DqJ/8Pwzufxerf+gzMBYtkJssSYBFDRO7sqg+MDGIcbrcZpzp0/OI8lmcquUiEUBPzqd+a6fPO47qYhnYdlMRkNNCpi591sgtO/tP/RsfSpTjvQ3eiXqsK3ECARFA9AndOcE6cfRB13dRdpIltd0bfPo3CEG2aW5pZExnpaxVpZUYZyy313eC1ASfQBnAbKHZVMPnzJzH0zMPov/k3UXnb5ahPzwj42LXkyBd1e5osU3VKH3UWuLRpvj2GLKMuLl/4ehYfP8r6b4tHAM87YUbyFM/BJF5AyeB3/1F8L3vfx4EiaQBmvlkMFo90mR/nvZiqNMT5u34B6rda6HzaDE3LqxEuqjoVxQlI2vpCnnalCY96T1eriDYZjpwGGnVYHSWM7/0ZRnZuw8LLB9B91bVSC5RK0jU00eQuh3mZ1m4mfzEo8iGqFF5PVvPFASRhJuRZwfK/k4RS95oOo8PtDPch/Ix0+x/XpjCZjAuQMejSh0AamFM1DG37vrjXf/OHpEvIRAahKxaNJECkI/CR9ak/0gy7PHZBQJqDLCxg6reOb6tbTtwDC6vJuDxhihKK8ACJalN0X6g8Mggdu0FaoEi2wFOYOX4c3Zdfg87LyBZo2LMGoeEBStDnTdMUoMvUPCo86DgkutcqRTE5PLcl9Sc81all6NQdx1j/flK9mbSfK2Fis05awCoQMjiI8V/QIlG5A4u23i7TsJ/sawFRvyHyOW5zm8Ptj5wC5tSfwY3QIV2YNlxfarkhZuYtN46prVJYm+iS6XrGIIM+HkfHdm2DU51B94WbUF65kdzCBlVQEPc4qQ+hh0ntU6QRiDcgtWpQzjeFH3R2zQmB+BkOMdl2USwVMHPoZdhjQyguWY6eK68goKAuPQLPDsjbPjN8cT7INSS64+awA+Lut3u0tpOS7JH0zPJ5uYEWaMAhl69x6gCm9+8XSbo2XiNdQiZyBXhhy89sJNoWc+2RyOXgdpMhJ7XMgMUblfJqKJnZwwR8wIqmAOkNTGPq8AviUse6lTD7+4R2EKuFhh/d72ppg8QpYD41wdlK7epzlJGZhZrma3gLP97iDxt9068cFXZAefFqdK8nO4DvWbLtjoFc0cNmGDw5W9VquyiK2e3qc9iNzjz3C6felFHC4HDwWS3Abl9t8KAIHWNvoPOCy+Q94Q0ItSFGc1ocRVg7FXRdmbOdsghvHtAkrXz1fpSLqVOPXAF1vY8oNJg0nYIFe2oMJq0WMnWueptACsXqoEXXXEvWxxkSZCDcDjPciai/Xy/K0oYsIFXYNVI/WcrPAg5F/Y6sx1Cis/z0JBlmuQC3PoNGbUJcKixbRPc75H2GhsVSsREY2q6RrgnErqSmyjNKbBbKoxazglRRn6xkGNlUaBxiGMf81PK94Su3lENY+ewF0IQPs9An7rEdYC3sx8It7yI7UHoDRrGDZo+Sp0bMRG/Ab4MINeQ9gWEo1NXInEfdZsmXVmdWQQr3S2e0q3l006e1Q5vYqKNVP6csR3npgoux8j/dheK6C5qSzez8CQ7/9Z/AOXkSFlsNhA8YtJAUJwDhNhaQsZGqltChLFolCkBp1d8Pz8dhYWjHVJfF/tAty/ViBMW1BYsF87s3bcLoU49i+PEnYRI4dM7Wd2PxlptEmsN/9D/gsn1g0TqBbUg0SYMKUdIe1SCV0vKEKQvenvRbbVPWstRruvXECW/UFKDTJp2BIJgv1k4gsH6zVkfPtVsC5h/6s/9J2NCkSDu24wkYv/8X6N18IyqXXorpJ+h30d9R6MSWr7YlFQgKdzyq81GdDKfPOkKS5vAsWiFqLk6aj9V7qgZKsyvCxmX4npomtc0KYFYnPvZcsBbFSgGjzzwjmG/1LREfd3QQk9sfF/dK564VYWRBnTEh72q/mDKtBeh0QH1YrajvpLxpgpU6whIYkibUWe6llRtHTggzt6ek61dY0EsCUBTegEhH+IDVWZJ/0+JQ0a/DwZxdRFHtaFoLaIWiDL28jNeh8GhTf+uqd13KatiFH3ae+jnO1z80omiZGNn5NOrTDfTf9CvovOgiYGoC9vApdF18Kfq33ghr/DVMvvTPABmMHFisniiQ9kyMnr6V88cptNdAajsxr9xkaz/Jg5ivfrmO1HAM/qCjS7h25338U1j6gd+Ac+oITu/eI9Kdc/EmmEtW4tDn/hpD9/+NdAGnp2E2ahJCjpFdsY3Su9ckAGc1szJQWj/8/YGSnFQBiCo3yqNolfzygpB1i5y0jjJQqaBhl0V4+JoP/lqQfuzYCbz6zQcw/IMHxG+zSsvH9SkYdkMIgM70ZMZ1LsngSTKedNPPJ6W6mzKQrvmaER1VFLY30oxI9XrSM0zKJ3eDczscodLFJXcGY//8IJx6Nfi8cu+fY/BbX4fJcHCdRn2jKo6cMTRXBZmavAAdKz/ueprh9XpSU58wO8Ki0oUFISwQUfZHmOKMTG1hCBXp0nJw3a6jd/16lLu7xLX6TAP2xDisngpDgwL8gV2j3jVkXZoS4J8RlHlUq/miRkRW6W+VdJA6kc5ba+fwa50dNUk0b4I9pysFmAQFl85bLX6ZxTLq48fRGCX0j7SEU3dEEKk4SyhjzIW2FxDlT/oUNwriXKr5EIwszFD35UXeP8NTViTxCi+hgbbHIV75K1+wAXWa58vFBsYPDQOj4+KeactQcsezbrKQtgAEBkpGUrXEfFnPUXWkCVqcnZMmuGEtN2/EB0QRdyxeD3BsWP1L0bXmIjn/mx2wDu9ElfAA12HI2NYv1tCICvYp7kHE3ctaRhZKU/Fx2IBO+1S0Tyedei1LX3SfGcd/yG3spnTtyMBbcOFadC/uFfdNZwanXzmEothCVg2ChpjSREHtA7fdTEKJVIrqaNQDCVPSWkJUWvVvHYM0DurUpVY1k26eLKpZHPMrHBUSgIKBOl1YtvlaFIuSvfbYIMb3HxJ7BsT8z96CG3P2f0rbzbSRE2UV61D4oeqOxqwwcngUJuVTp4c4K78dFCWUbnAWiJEYthU8L1oJdGgxyCFQqNC3ED2XXgK7Wkel08LQsSE0Tp4QwmHyPkJlM2lWSrUBdB5OnHaIupZWnk6aqHlbh7IIYysUq/FcQ9kkE5/fCY6LKdES7wyWXLwRlXOXwZ0mt69cxNTzO8kNlOsBQv07UjM4ObRA7hNC2klZ62sLA+e7i2zBhT9KpZEnfvnHS7MA0OjncACHjLz+6wcE45lYC5zavgsdDBM3+GQRzCKHOcLutbeGxVHUHJ+Vsk4rraYRKtgxUiNos5LrI4waO2BUF9RnHGsGU1j/BREFzChgadUqLNp8JYE+ozAqPRg6dAgT+18SAsKbR8XuIVcGg5pC0JCJzujWsFY1S7tUt+EdrmS47RUAIzipKnu5wvIXu3zl6OdAT2bwshuvQ2kJqf+GLbTA+FM/IwBoTORh/18s/bbwWFoWgCxMme+590zV0Q5StY/r2wasTS1aBaQlYPb9zf5+LL/1VqH2DQ4LJy3w6g+fQJmRzBqHftli9DdTRiAoi9sUB/um5cmS/owQw8CGO7v9ap7rEPV4v8WkbTjBFNAkCMLvL8Lk+Z58//PetRXnrFsujL9SVwXDO3dg8sAeEoYiYT81sTXMKC0xpAAAEABJREFUh7bFqWccRGBkm04LeUdwVsv7bKMzsU8xXEdUncGbyPj4eN7hw6qf7ZNFfXL0120x+pkO/+ARtgrFyHfrXFY9OFwKOQ3pYDFI/c5CWUOismqOuN9nC7WnXabkBLl9LAD2TA0rb7lZjP7a5LQY/SO/+DmGt+9AsaNDMp/9fxeRS79Z2hScEZSH8nQ+r+bIg0fkmdqykurjJ5UdWYfISnM+G++WZD75dsLyX3v7v0ZjUhp7VtHC0e88iAb5/ia7/Bz3b88edJmEMhopcR1zzgdIWhpOKijpehbbIQoO1mGQLhiVlEenjqw2U3ICuasXBYJ0OZy7UgKHf2748G3oXtaPet0Uo39o1/M49tOnUeIzATj2n6cAJe4vChgLQ9xxfS1Ak1QVrouoqenUxujkCeeLoyywcVL7sqRX4WrDC8FUQ07U9LFrLSKd5/KR1W9VyrS6V8dS8vlX/qoc/f4ZEC/f/00YY5NiI6jhMvTbmGNNpD3fuOtz9gWkPcywdOlSVnBJzZfUpjNtZIY1lBvgCYZn4Tdb4tw+6eM3M1+qbUtu6rS87V+9fVj/258QKp+p0LUAJx5/Aqd4J1C5IEY/u3/yxHCnGUzSWJhTqckIjMsUNxWoaZPSzF5AJgqXnXd+DlN4Sslc7pwp3I3ww6OyKXaCK490cUn5ugX+0Ho/qf6Zag0b77wdyzYtE6PfKHWJ7/1f/luUuQ4+E8gm/N+1m/oT7l9T+yKeY/iZZo4H0FkTn2vASXg0K/SaVUXrlBf+ZCvAa4uL2c/sH6G0RtPHhR+tL102AfiUikL188JO/5Z3YMP7bsHMqNz+3dlt4OV/+C6GXzwIl13DKguAI40/V1r+4eeT1J/wVBmpAfJSqrEVQK94Q1Og3V03wN8l8tsM6swe5T77kUgfJPN5uze5fGa5gir59ZVVq3HJf/1dkZfBPVb9+3btxoF/+AbKnRVguiZ3/NqOPEpWVpLe3hR7TcQDpBXwFnnkJt3y1Gqg4qM9EnGWHzHfLZbhkD+PIq310/cVf/C76Fveg+qMLWxCd2YMB+77GkG/E+JcAJ77zUZDzP3+tu801y/q7yjKPAXkoVlIFG8eMmZP44hC+Hx1K2KPvWmSoV7f32ejrkbz+i/9zm9j9S9fHKj+jt5u7P78/RjZLt0+h98bZEvDTx4mLv1/oQdEA0wvfKy5bl06I6uBaVG4bwhSH7CByLX3KLtCTBs+84se2ENGX3Wmio3/9tdx0YfeheqYjO5l5h/4weM4+I1veqp/Sqp+seTbLGjyb0NejzBDdJfOz+hy8NlAaeFiOhS2ZcLGbZORzGAPI30+87vI35+axur3vBNv+8RHm5g/dHAQe+69D2WaJgwGfPi0Dx794nUyXKbeQXBJfQnf0waC3izUil0TOYW5yVCsOLiJmO/Sgo7pMZ8t/qvv+gRcVu/cJg7unBrHjs/8OWonR2EVDIn41W0Z7sVBn4YUtKaQL0P/VfNRgFmqETgfdKYMy3bV09KqpzjCrQSDlnfN7k6h9pn5b/9jafG7HNFDzDfIG9j+J5/FJC33sm1gT1cJ7LODF0vOp+1kRoEEOpQLSEH7DMt21RP0wUUkTpHUR98OcLxzkAOAieO6acQLtc+HPFU85t9wPQb+9FOodDiC+ZblCqx/+//6Ag5994cS7aN5nyN9xRZvR3/DRxL5Iz8MBPGnkBdsOVOMzEJxuHsS+en8I9fnwpZOEKxpGrMwru/ru55vz4GcDtdvWCL+0+Q1/CIxtFwWzD//vTdh810fE7h/bcYRzGd//8XPfgkHvvb3gb8vEL+GjPPjmuVL4rL3P+m6+lvLBlABhXZTFJKYh8LMb1ubDTSdJiCZL0/xMvwATn5xA7/BgyREHOzFdbMLR9d5CffCj96B6/7LB8ViDzOfqWthN5794gN4/nNfl8yvEsxbr0rmE+Dj6AowC18LzzCTETgfgjCfc7XroY/qHCrROyWt/2buuG6JzLOLrzIAQ2E+qXiDAJ0GYflOw4RpOmgQ84s0wnnovu0/fwxX/vv3ojoprX1Cf1Hs6iHm/xNe+MvPU/ayZH5VMt9o2F49ylnBCSTPB85PWgLQbkz+TJCPvEVD0LPQrZEKUfvTgudsi5c4WwHzHX65k1HBeTdfjsUbNoocY8eHMPjiPmz++O3k7t2IyeHxoDSf+Xvu+5IAetjda9TIHuAIX9uZRRU99R/bKsWqdw3DX1zOTIWkwt9Q5Krd90H65LRpukd9BkIERAZLrOL5zC8tX4Ib/vj3sHLLFegy5ebNGmYwMjSISk8Jk2NTsgCaDsrE8Cf+9O/w0le/LiBgY3paaA6LVD+/OtbldwOorTI02+YPUHgQcQalWkgrPKjkDAmFUNmYtbBNKC+UjiA3cgRnX3WMW9Fsjhw25MsZeFMGW/kLFuDWz/0hFl9xOaYnJ7DvuZ/SnN/Akk1r0bW0L2A+C8L0lI1H/tu9wtpntd/E/Ia/t9+rw/XOCc5Aov0Z2OP3L3UKiAIQ5pN85puaTDTkwlzwwPIYlXExDcECjnebfGYy7EjgCMploOaSD94umM+j/ak/+jwOPvoUyUYRlXN78Y67fgvLrr0Ejek6qkdP4kd/8Fm89tOnA2vfrU8Hat9xFQsjaH9+r8zIshM56mIedyqOMuV3MQdjTzOEfP/bp1aNythYAZOPbSvJd/cypNvbgxXXX4kSOnD8+49g/7cfoZFdQKHoYuJVEoi//CLMiTEs6irhsb+4H8efehbFnm7h54OYb9TlEi+HeTMT/E8rpIvNqH0z44Ip22Gdy4MOvP1q3lKpXL0qiO/mzZNG4HKJNkBhbkJT5ATh5NJSiaFvfiwHx+rznF/okPN+d1kmqDfQWZEK9PSxEVjd3eLvRt0QgjB+fBJTx4aC8gqE+FkM79YcCfHa5Fk4zWFd8kwIF0FoWQq1g0dNG0MCtaegRbk0QDCSDeUNFt6KGM+hbp2+yQL2zrPwDzhA6GHEFq/6+T4Cp1YeSUZT3rj+SaGD/I+hXD6ipWiJ3ToOMbFOTOw69xxc/hu3oe/8FcLg69+0Gha7cZ4GaIxOorJ2ITqXLxJl1oZHBNNdPsGL4/n5raCuM2fEB5tENVV4mHe66SOBIPWhtEzKFCYDJz2fmcgu9pDfvAzGzCEpIk7Vy2Jn9meb2po2YjxLMjZKVyytS6a74rsoX89a4sjdArnqM8KKv+jX340rf/N2LF23AsM1foPHGNa882pC+m7EvoeeId7W0bG4B1sJ+Olf0I+De/Zg8LmfywWeaQnyqBPdmVobiatLvDAiLWMeLeB469fyBcf8unOyfA0yfhbeiOKqD6G6+xMincln25EQMP4tR7T+CpfuVCXj+ObOsH6QCoM67N47vHDD7eW9dzSaOWKXgzbYZVv59itwzX94H1ZdcRGqNJKr01NBOWXC+oskwEd37EN9eBD9G1aif+UmTGIMX7vjHpza9iSZDiVa8ZPHuLokBGYGvqeFfOcVItebjGMfZNR1nWlBxst7aT3m88Ol4YTSuZtRXnolqgfWAJMHxXWBZvEbs+khGkllxjyISDcOLqJjNeVGSonmFaTlZZUFamcUeYOGnOM5UJOPZln/7htw1YdvCRg/Nj0WlMWMZzqx4yUxHWy84org3skje/Dg3Z8n5j8Ni9w+l4M7RGQPMlGUgRulyvMQTzWFuILimJxoOKkqFf5ed976RMwvkhFVWoqO1f8GLrlCpfNuQ+3l++R13ukq3nHQ7MuqLmic4EWhlMImEKHXUpvw/0LITLlSx1qJR7cY7azi+TAGUu882q3JSWDxIlz0a1vxtve/K2D81Iw06ArCJiygVOjF8VeO4tl7v4S9P9qBvk2rsPqitbA7F6J67Aj2Pb4H9onjgvnC8vfO8kNGHz9uEMbdy0qpQFDWVTXxtzRnheqvk19ssgVdn0FpzW2wejtECnPDFtRe/TZZSMfhMDDCL0N2Z6gcE0EAtWY7wsLheqCKEEDfQLTEEp1gPO+/t0oF6c4BYrXOQB0L16/A2q3X4eL33yTmeJXx4mER4wvUl+rgSTzyJVrIuf9BcVhDsasTp3buxemfvRCk5fN9uA7BfMb4HfkiaEPouegVvighzxLdk4eCKSCJ0tS+uqQq0ouPKaNgmPlkGRP3USGmo5vYYpFV3L0SHZt+BTO7/g/dL0ktIAIfaY50DejED4ZBqlnBg/dKLEt+vNU6XrQRr2GhD6/MuTQns5pfN3A1NtxyPdYOXIWeBb3Uj2ok42dmJrD77x/Es199EMN7D1OzCQWgacOdmCZFQiOc5nkRvMnuHfXHqdryCFfHFqt7Mj4wfnk3StO1yyWPI63zAXTVPpPhW9pibi1K5hIxsysXdKE+NiJ+sxB0XfIB1A9/D/bEEGyyBSyXR4opT74SR582UzPaL8UMHk7gH67E3obrM99T7/4mO5tGILtxhc5OLLl4LTbcuBnrt1yLczetE/drjdFExm//2kMY3XtQLOKIVTxC9Bpk1JninF7Hi9w1pHvrytfAO15Uj2iSpsF6JoWgpZhAtZFyg6QRGFYc+25bkvnFxcuw6B3vER5QccEsW81KBT3X3IGRR+8jeJXdpKJYYOFRA28HjB8C7esEHxji+VuctGVKfIEHvs2na5DLZpYs2HTBtMla50oJeWMUru/iVYLpKzZfhqWXrBDzeHi0M3V28LELCwjLn8Hub88ynoM1/RU8sU+vTla00Fy2VF4eLm0oz0SHohh+piiXAMxpoAf0iI5YheCQI6NMv2mU9P3ye9HR343a5ERztuIUFlxzHaoHH8X0K7uBLipjmphfk744v/hAvB/Z9bZRCzDR8t6Xy0znsKuC+DaIOfyWbcFwWmThgxSKy87BuRtXYdWVl+D8t1+Ivg2rUSwvFky3q+ME5h2nMgui4CIxr+K9o2/4yEm88J2Hsfs7P5EjHhCMF+/ko0Ucl0O1vIBN10PzhM0RRo/VviaFlqUsviXllYPDbcJdslCmV8Y0NdQDe3iud3wAxZtrxRk3JFt1mmO7r7oWy27/vcRy7bFXcfALd8EaGYdBo1fsj6rVvMBIR2yJEvVb5izjDaktWO3yWXpOmZZbz1mE3nVLsOLqy7H2qvU479J16FncR6ZcN7VmAtMceOE2muoudlh0r4Ipquv480fxwj8+RIs6T2NqcERuzGCbgVxC3psnt2d5kbqO4y1aJTzcNljrWoIToK3ZphmRvhUB4JAFHnk+Yzj+jQ8wEidYLToHvf9qq3i5YUBmaW6hDgFBpU40ho7gxP/9BgFET3tpLe8kjNm3ZvCp2P7CmbGwF52rzkXfulU475LzaaSvEABMedkidHpn6jQwjXrViGU6E4/2lx97Ds9/68cY3X1AhG2z9jBZA/mq3hvxvDGT8QqjDfH57cjrYx1+1FMeOFhbAMJAjJiDiflOoSDCngWxiuyoYMHbr0P/e27DwuXLMDI6Q8uetcAeiCK+b3VK9dv4xXYcfjxZ/WoAAAkjSURBVPAhTL+432uoN8aYEbTgcv5NV+PCXx0QzO5Y0olKR3dQThzDTaNBWE85YPr44DBefnIvjjzyOA7teBGTr50W10v+iQykKYx6QzLei9EThzMBSpxCNLXLWNMux193URbSUrMohmbut4aJHa5iGjBlYCKNyAWXno/ud25G72VXyUTTDWQmXmGjfKMvPYeJHz6F0Wf3kB1RlVG27LeTSl7/7s24+c/+XWIxzHCmDs/MGR6cwKu7XsHehx7HgSd3Y+LooLgurHlAonS1qtQ4df8AZlv67gFwnzzy222pZ7EbctXtIqcAGJ4AlCuwlp+Lcy//JXTcuAE9G1aJkVKrShVsGaXMRduEA3A+o5N86qkaTu96CY1nnsfplw6jcWJE2Af1U4N45199EtfceSvGxocJcCnNYfhkdRJDe0/g6K5DeO2ZF8RIr54cExBvR1m+br2J6cxssf++IZg+G1Oo9lsKQHjVtBVoNlzWmaY5XoAW1s/+dsNFz03rseKjNxLAs0Rcd4ZPkWXdgVLFU6WYbs7opAsEi07DHYfD6By5kku2XoDGwDp07zqI1774CKb3HSE/noy2EYknLOjpowXZBmrj4xg5OIzBPftwaPs+HH3uFUwcG0R9nDwPElYGbXheF8xvzFrzptMQ2t1H6nwjQ8YjuOL83dldwM3PKervOApb9a8n01XKpQG44Ta7ejT/W30GOi+7AH1bN6L/ugvgVLpgTk+iMWMQHFrOWjTsRlXkc3sIsh2ewuln92L0e0cw8cIu2DOevJKhueX370Chu4wTPz+GE0dPYGT/XlSP14URxyRO07Zm8YDAoPRGunivnuOIoAzRJzd+fm/Vgm83s9ui/v28vBycFXjgCh3DClA3XtJFVwEdly3DktuuwZLrV6KwgJ75mJLH7ZjtAGkJozATWbbVO4PqiQqGHvwWTj48itrBk7P53LLcOcNgDDGxOiGXZIu8llCW6/fslcg66oEhJ16iKbZYG9J3V9+xogQUWmjfw829RNvCdJKHMmkAVXXxNih51Al5ASVa3yY/nLFvJhaEFR++FOdcdz65UpOw61L1m0Y0Ci5i67vI556sY/B7j+PVB05JxjOoaHnlNiQQI0hwlPAAttqNmnetJEe3T7YTGHJ+2LTjOuEOCQHIYtHrTJGtMj9cTtbInyzUFBCSFHAQuRQrkD+Lp1hC5KhhhPwJhpFxxQKx8IbFWHvnehT6NyKJ3FIXTj+xD0f+5nFU902IMpj5gvFVEri6G8zTrhdogtggEXg4PMQ5umG1LoTXU/emB2bFPpx58OOTpoPwvTiEsF0kFt3CGkBHwpsKMeSCjFFgRHBWGwgGTtooX9iNK754S2z+Qq+Nk08M46XfeVT8DjRJiPGGM3eJOGgDjPiz/435B23aXV6UJpgvYTDTKk8ikdZjDqN/jJwZMzTuphqCiWYXLbu+OIEjX90pGC0qLNaaPs6UjYP3PiPvsfYgoXGnyPImAXAJfTMFEGOLuuw4DRUzjF3/KG6ZSLkhI5Fd5DwvMIHiytNddU0KesmTNzlTW4+JczwQxRbM4xHsC8GrD+zH1EuvSSEwJ4JPuW8ax77xslT73shnATK8U7EE3q50yoztR0LQhM9k75+attU3hqjMjmK8ypQ0IdNlXniKyMX4oLAWBaCp074bxRqhMSsEIhL6pI0Df7ufVuKI0YVJ8Sl1j2Ji7ykc/sqegPlujfEFT91r9Cl4+HDntGnOA/f2JPC/2TRoC8UxV1e7ZNa6GduRRPNzRIzrvcy47mmBzgJGHhvE6PPjqPRKS75YdnHgK4fhDHlztBCWhmfouYg6hUtlrjTmjECdRz3sM+VKtUq6gqJqm7aQOgW0UnjkqGNG8mhmm4A3Qow1hBZgYiEY+YWDoe8Py9E/KYVFQLNw5zA6jkyoD0+a/1GvZUloOfJSu4Ed3Xle/Q63J/NU4E0B2/xC2y5h/tsseXSTi3j64RMY2iExgVe/PS6EQpAtrX25qBXte8e3yfP7vHNc45ke5cZmV6ftNhqTysxSTx47gMrfZppms/psLxLliE0QRt0DYk7XcOLhU2LJlg1DETJe9UZ/guqP78Es4/XSOk2fOe/0CWmdsIE331NKuD6dusPaUrx6zvvoUORiEFOWMOzIe/4CCg9tDhapcjSwiVM/IW+gpwTnsISPeYoQQuI43ghu3TL3KamNYcqSdj5IZwSrzz2yD2pokCZZ5UrvWvoeQEKlcdeT7jX95qmAPECDBKAxVMPIU6fkIKQVRdf24+Ul+eOSP1ks1KjpK+laXP7Xm9LakTRNS5dX/iXTII3+jqeAbXEVRakk/3ea4WIo/4R94ciRjhmShImG+FsAPY7bdAK2fyxalpcgJz20uD6cbZSlfelC4m1/SyHmvSgp6wbRpClAh4QLx98tlBFVZhLO/kYiXdg3zJOsNHb6sOG/N3AbUhrUbrenHcyP0kxvVorbEJtXs/k8FwJg2/Y9Or6ojoE4nxRW5+31WF5/SuNBFA6QFwqmPI/xd/DkouICkizqVqeBvPRmUvUqpXkhOvezPBNW//ytIoH3IAO9XlogaRSEr2Upbz5IbVdUG1USzFPOTHKVI23Cc33SwNSkgNdNIkNa4MdQXMK4UX6mp4K4Dke1Iw96Nl/aJFx+WjDI7CkmhgduNccyhPNGaWUd8kc/U5OrbVnWPWphcQzOO+9kpagOh1FLnSiaMLVqPeuSrpEqEVAD/oZnCelIMC0LEqhD5PptUX83udszUyMHOzoXUlnGADQorwWqS3EPMM4l1W1PEpgSRVk0RV7hCnjvr2vwrsuE/DlH/z2jQ4e+ol6Yg7dUp0e3ETrIpQ2E74WlzdDEq9NIza9bVrvq1qGsIE3W9oSFXH7S82Ss6x5S/XfPKScu9cLFawbIPfxxVMU6pI4aX00njdws9Gb0Apjmo1/s77OBPzJ4cFvk/bQCCCW8mxr2aa8wcS2KcUnGokpp7sxb1FaKHPUqaT91TxBuQMzUkNso5Ba4s+W0SpFegnKAgnr9bKB2j/q0ET8nPXJQ98IVA2RNDngC4dMAmhvS3Dk/ZjCyEYY4AaQd8WlNWIC/KsZ1CyN77rT0ehMvlKrvItIlQ4HvGdXjhR1dpqv0/wEAAP//JPsOGAAAAAZJREFUAwAvrwqrJ/xcsQAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;Voyager&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAIO0lEQVR4nMRZC3CUVxU+5/6bTTItSRMaQUp51AclheoY2poXSWyyISlMSeLWx7QdxpnitNVROiJoR4xCC1gY66gdpZ1OrTLTcRsSqyEJpJAmbEIVxgbMDmKxoDANr2CS4ZXde4/n3v0TFfff7Ca74Ztk9r/3v+fcc+499/znnuOCJCHfU3e3UKFGhUKlgFjZubfhb5AECEgCijw1ywXIgyCsuwVibpDo3fzyukpIAhASiPx8b7qYpp4DoDW6rRR8KITkOayZ3CQi+FGm6+r3W1parkOCkKgdwMKKumqcFuwdFR4UdQkMLVEh9xIA6ddjEGHdUND9XqGnpgIShEntQFVVVeqgTF8hCNYQQkG4VwWBxMaU4MDmjo6OkO7Jy1udkj79wrMS4FleMVd4HHUi4YsDt1nNAZ9vBCaIiAoUV9Z+RhFtRhCnFMExFHAaQQ3ZJNlAcBcLfB9IKOM9nPYfStUOaH3T39bQt+DbB6a5hPwZK7ft6NaSo/ptfvnDi4WwXuTHz/0XzSAbwj7meYiQ/g5kDehePkOZPMdslmEhKz7bJWB9V2vDkRtldUVSQCr1ZUThIeaKWkXSfzfoSmYWtnMlhSWa2b63d+9p6tSvFq1/x0OofsnKzuOXPx4l6Wn/nVakvLCytpQkPoMgq0GITO6rYfY1qOdAZbNH+5eMnStFbJ4QmwKAYji8ODCskP7BnoQPocrgNpElhljYUwLhKDPvVKR297Q1ndXDc7/TmQtIm4iwBpxB/rZd+/l3f2m1d2YopKolqKWocDFYMAclzyO09GKIraCf+c0VIG4FwuFIzFwOc1wy1iXog549jZ+CKMhbfShl0f1rl7Miq9nMlrP9x3yuOnb7+vnnVfs/Ioo8tQHe7IUsywDErACJAdYcSGGWbs6r35+Wdt01xxAIzGCrmcWPuULRA1fFlTKWOBONrSXUK4dFAckyWPyAlyBmBQTvgLZ7Adm6eesVMZ8sChiGSlunbZ8CkyDy/4A3lZ2G0B8REVGBiN+B0cH88hbtAsEVHICbgLwVK9L5kLtNw1KxK8AqjAmcOv18lnLPvAQ3Ae7LaVljDVQRFzGiAkoGxwRmJ5YdqF80wu7yCkw1xEj2mBwqJfYdGM5OHRvMwaRZBbb2Kd8FFNbYDszOgMFIYyIqYD7tCsyKoxSGiXA4REkFkq2AGvT5fDLSEMdgjr2isTl2RmYb2SPdjHNg5lYgHJ2IczSKtsmMrgLS1CugwrvP0YXj3I4KEITdFn+gsuyOqXelo4tnUfwK8CtDxIrYnkBN/SG2F08QTmAHlLpoHhRl29ymfgekvN3IAnDRaUi0M3A+/IMz7I6zMMUgIWaGp4ZzTmOcvZDA0+ZBwVzTJjoFUwxe+TnhueG00xiXM7U8EdaP5peWlrrOkTiGSBAvOLWyIPe7/rhoAs8X9FZVVbuHgmoux0KsgDjhNNZZAZXSB4K/HRxMyfScTwa2FgfuWdf1ab7QxByAauEJ8Q0kGSsJ31IVmwvOGAytXIhCGAuxUrAP4lXA3+77Z2H5ygFWIJtUiDMLEOjbWtwLcUCvfDzCa1goesyDwPvMtRVkf8fuXY7nL1pahRcvzExJKIEpAmcq9plfiWZORa5uCN/AIyJqXkiBzUzgMqivT0oW7/8EstTvvV6vpUB5dNsCtS/q+KgvlfqD/Tir4GDvA5BksKc7eGRTyQdnBmUhm3+O7gtZ1ByNJqoCB95uPC4lGLvnqPRxSDI4EbzDCEWwyu45dLC16WQ0mnHNwrLoV2Hm8tG8cm8mJAl81z4DqVk773+wZjrnlL5o+sB6dTy6cRXAlJHXONV0Wedm0oR8CpIFARv1zc9t4de5ka7vAJgW/M34ZOPgQHPzJST1C/3M2ea1RQ89lAWJhqL37nn/7CvFVd4c3olwchjFz/1vvTU8HmlMnsVypWzVWTr+rGRRKG0jJBC8KCF0WU/4fI9Ikpya13kngH8psLbHQh+TAl0tvvN8sn5oGkRPFZbXFEGCwDe/DX95ruhQ0bLPl3Iq7QnTB7Chp80XU/Qbs2+/djHnJ3w1+rPhT/jr0tKVt8EkwdnoxsCW4i35ld5sFVKv6z4Ot/54R6b1Uqw8Ylbg8OEdQTamxxTIa/x1mXfdLV6fzMeNA4w/pbtvedTrfUQIkjs5hX+nTiSQZT3udIGPhLgE0Hl/C1xP24QrCrt7t8BEoFRAjcjqw/VLrp4ZCmlbX6a7OXb5qr/V99d4WMW9ggf2NGjf/NNwC9cWVNQ9Ewe5ThgfY0/z4PHtZRcKPbXrOfb5hs1rW/fehnHd5o2YkAnMyrTWkIImMy3S9gJP3ZMxEbK7dElREnihrL+ook4L/rz9xucvWLwOJoAJKaBt1B3K+JIpKYE51S/ZAjmCS5TvXE9PLTmyrfAcF/m+xQdYl5p0wNiSYV19jM+Tgglgwoewo+O1a9dS5cMsyNtGQBaIixH1ELFIoN4YuXy58v36zw6z8Jt5yAv2i9bUkWm1kym7WjAJfHj8eHD2Rxb7KJXuZakXcFfpnI8vvONjd85oOXnypMopWpXN97ehvs1Ln54vt+Fd9859hYX/mlGJcBfXjL3t7W9OqmackPqEriGk3X5hB4xFkdAastK/8G7LTlPZ1EFgmgj9lqfzhCfFlz+aKZ6Mx106IZEFFuTq4w9Yie+FGeNRUmI5uSViCPS9YpEZRbDBv3fXJohyy4prUkgwCipqV3F99+VwQVv261sud89g3z/Ccc5X/Hsad0ICkZQSF+9EGd+jG3TwZ3dd5Oiyxt/2ZhckGEmr0S2tqPuEQmgISTYkt6rrbmk6AUnAvwEAAP//XU01jgAAAAZJREFUAwCEQS/e1nZqSwAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;WebRTC Leak Shield&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAJL0lEQVR4nNRZe2xT1xn/3Wtf2zh2Hn7lYUIS0iQQAgtrxRjN6LoVUegGE5pK27VjbNOmok3aNIqqsqmm66Z1a/+gLbCuhXZTJzWbxFaqwgSsrFCglMdGeIRHQggkceLEiRM/4ue9O+c492LHTmInwLKflPjccz77/n7nfN853zlHjVGoq50nYRzEolHcKajU6gltzl+8wCU+Kw//S+KjkY0Q9m888pkSFyUJmoJiCNY5UNvt0BjM4AQda4v4ehHp60G0/QKC7uvgOS6j35xICBUxrsVE5ClpY+1y5Nc9AMPs+dDl2gCtBpKK9IeKZzaSKm4rkceYFEbE249AZyu8TccxdPgvkGLhMQXR908kgkvX++MRp6Q5QY+i+7+Pgs89CL21DBBuEYiNvI+JGIGk4RURkorY8vFy2N8P77+Pwb37dYQHnOOOzFhCUgSMRZ4Spy8wL3wKJUsfhzbfFq9Xc6QXoxju74TX2YxQTxv8zhbE3G0QxRB4XgveSlyruBLGmbXQziyDMKsCgiaHiRB5CWIggL6jH8DduBVSJDCmkHQikgSMR17Q21G++hcwld2n9HjQ60L/lSNwnfkrROLbmYIzWJDX8CiMS8gIFlWwOjoyw53X0P3HlxC4dDxjEYqA8cgbSpeiauWzJEhHen3Yh46zuzHw6U7EiA9PFhxUmNHwTRSueBIaMkpUhBgJobtxBwb272I26YQkilDZrDZHOvKUOFVmmb0KNSueI7NKAXgRcHecwtW/bYS/5SNIUgxTg4TIjQsYPLwHyLNCay8HL2hhmL8IMZUGw80nGAdulAhJFIlrxuNKZS4wOdKRp8grW47qhzdBrSX+SkR2nf07Ov7hgBgaxG2FGEHg7L9IUIehr6wDryEiauozEqGymi2OdOT1+bWoW/YCBK0RIhfDjU/fQfdn2+hXcacQvt6EQEcXjPMXKyKG+1wI32hOK4IK4NP9EEeUVz+4GRp9PnvuPPYeXP/ZhbuB0Ln96Pjzy4A/SAjzKHnsx9AWVbE2uXNlUNdPEiAblNY/jbyC+JfcrcfgbNqOu4nQiQ/gPPguiTERQq4ZheueG9NWCWeZvKCvRMncR1g56HGi9YgD2aCkpBi5uXkp9d3d3fB4PMgU3j07YLhnIQy1I38Na+D7ZLeyHqUIkFG58IfQcYRARMK1UztJ8PqRKRxbHJgzZy6GvEMpbWazGTu2b8fBAweRKfrefRn6n78JXq+H7ZFvMwEUiSLUcgUFXawKSxaz8kDfeQze3IdsQMl/64mn0q4NK1auxNdXrcpKQMR1BYOnDsHc8DXoSsqR88XV8B9/P8mGTwyMmZWPQUUCmCe933n5fWSLKEkpxlrY+vp6oc4gTR6N/g/fgRQkKYlI0pil31DqZd5KEEukwmL9PCsHBjswdHM/pgNoihJouQCOLKL68hpoZuQntSsCNDkzYTSWkt4HBvvovDvVVfb2wXPuCFEClgBq7v2KUs9iQX6wFHwZvFrDyv3Ok5hO8J/cBzEaYiKMNfcyb5HBBNAKg6UCHPF9MRrGgPswphMkXx8i7l5wMZIVW0qS2pQRmKExs8/IsCerqfNuITLgYnGgM9qS6hUBWuSSESAzSciH6QjRE08g1Wo9y4lkN+Llglod34CL4cnn93cSsXCAuBBYnNJcTQaP/3MoK0s0GmQLGA8B0xEqjZ4Mg8gmGSlhsVRGIBr0sk89Z8J0hEAWMC5GfN/jS51GKcL+XvBRiRzr5EJQWzHdIBhGZkmfO6leEeAeuqRU5uUvwVRB02qawNGN+1ShyrWzQzMV2bqHXF1JbYqA3oGjZAaKsLItbyGmgvr6ery2bRvWrn0Uv33lJZYgTgW5dcuU3xhoOZrUdisGok54/e2sXJA/b9I999Cyh+B4YQveevMtrF/3Pfh9Puzc9QdotVpMFgVVX2L7E2nID/+5Q0grgKKr5zhbzPQ6KwrNq5EtTCYTnt6wAb968UXs27uXJYSO5x04feYMNj7zDCYDwVYNQ+FsVh66dp5MNsmbJT5xp9/e/R6C0hATMatwJbKFq6cHz27ahJOfJSeDr219FY2NjQiQI8RsUbTou1AJM9jxZdfpRnISkewZXE1VtSRPS6IYw4Kq51FeHCff1Poqut27M36ZjrhJMBSadHuKvW0Bqr+zFWp+BjzOC7j4xhOKALnjU1biS+07EQ7G845q+5NZTakTkcuGPI3BWV/9CdQxHfP/jsNvp7VjAhQ1RF043IGWzj0k85Og05lQV7b5tkyF2aK44acwlMxl5d7LH2Oo+UCK+1CkzYWuOXfANXCWibCa61FV+jPcTeTPfxwldaugIrEYJml0+57fJbUnxm2KAKqSxsLpq78kQediImhMVNh/hLuBvKo1qFr0A8JDjUjUh6t7f8O8Im3vEyEqi9nsoA+JqmhQx2JDGPC2oci0hASRFqa8edCqytA3+Anu1Plo8YINqFiyHhwJdlGMovXg63Bf2YM4Px6jedKyymaxOEbTocZURJAodw9ehc30BQi8DrnGCpjz7kf/QDuiYg9uF+hEMfuBLbDXkhNB0tMSyThbDv0ePef/xNoTe1+J15FPbm51jZR4NpSY6VFXojDoFuC+OZuRZygj10IcuayL4Gb3AbQ53ybD3IvJglPnoKh2HTvK1GryIZHkPhzwoPnIK+i/9qFiN3rqTBHAyE4gQlBZML9yI4oLG6Di4nsGuuj19Z9Bh2sfOU48gUwh5FTBXrYG5srF0OVYIY1cWXmc53Dx41+Tq6vLGZFPEjCWCFmADIvpYdTNWk8OcMvjdiP7n0CwF4P+6/B72+EN3UQ41I3oyNmSTk9uXwwzkW+sgt5SSso2JTkTCfkgSeVbmxvRfT55rh/PddIKSBQhjTqLHy3EXriWzE4rCKl7yGXErV0cvbWUiSmdIcift+pEIX4C2NX2EdouvkEaQxOSTyuA/ptoFMYSQUHjo9S+HCbjPOQY7WxDNJaISMQLf6gXHnczXDf/if7eI0iHTMk3X7mcelNPjWQR8peVI4yRNSIRvmATmlubRt6mhUawItdQB62QRx5JGkDuioMkMH2RNgR911N6eiziie9PR16xkQtjuZKMTEZjshiPOGtPQ572PrMd3TCekNEiWPsUhKRbXSciLxOX8V8AAAD//6U2Ek8AAAAGSURBVAMAIj7rZGX5SycAAAAASUVORK5CYII=&quot; alt=&quot;img&quot;&gt;书签侧边栏&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4nOxdC5hcRZU+Vff2a96ZyYSNISSE8DCAHxgByQMnXwIBFV+QLBAVwQ8BAXdRPl2/VRxYldXF1W8VXL911WUR10TB5yIxJE1CAkFjIJAISNiEBBImyWSe/biPqj2n6t7u252eyTy6p3vsPklPd9++jzpVp87561TVORxqVNXEoUZVTTUBqHIyoUYTQQw6OxnsnMcyR87cJfGYxE8SykgMalRKooY38OUMeUZnpzns7yWmmgCUjCTWLdO9+/bVMWhInwYGTAHBI8DNJFjpbgi/+mK28QPnTyDVBKD4RHWqG7LzwRPx660ItRaClGeDaTZDKAJgpQCEexh/24EfNkAK7oN/XnW0HEJQE4DiUqDxH/o0SPF5CNdNxXeAVALAtQUKggDGOJhhDtE6fbpt7QVX3gn/tOoBmGCqCUCxqLOT40tA530NIFq+BeHIx7HBAdJpBz+DMaWd8/omxgwDpOOAGOyVbneXQE0AEI5qMC7cewCu/gJ0khYgOSq9NqgJQDGp84dRbM0HIVJ3BSQTNgjHME86lUVmnwG8oQmYaTBugGpzaTvS7e+B9O6d4B7YK9A8AIRiBpqH++Gua26BCaLxCADLey8Hybz3MhD2fKCevxp7vvUARGIfhFTSRjVvRs86n4Vnz9WlE6D/qI5NL07/tXV45QWwXtougBsCMYIJdurfgc24DTqXuN5DSsafAaOljg4T9uwJjl9lGV9BPjhMuCAQaFuC4/lf14FMUuN/CNJJBwxuRs9dyCKz5qC6l8CE9LoJYTwGmT4jdHFD005Aj0yUuV378ZbSRZNxPoiedog//FsoMY2m92YBDtLixZe1uyFoko5dxzgbvSCNkwzXtNLMTbJ075GtW7f2eYdJCARMDOn6UGo/8iD23CtU43NuxM5ZyMIzTgJhE95j6iWlrrpCn+nFQxxSu1+C9AvPCDBM1ARh1ARp1ARoDjqZgLz6LyYTI6FMxV60ZPlK1FXLsCwLkbWZ2PiNjPNs0UptEDwVKhwXCyS7mRQvY/U9ibX4q81PPLYpv7wloQzgC6h9anxgRuzcRSx84rGNz9ixFeMfVwJBn00UgleVEEhlDiIRxAQoBLtCt8KalaIUwJCN8By54KJLLsKG/jLnbLFhmOA4iHEEjWqUYROBe5VSDQefYWDlMSqLgcjadewBNKo/swYTX9y6NY66tMRCcNv/RqCtF3t++Eq/8ZXaP3EWAjyhVP1wje+T/7ugd3qhJkjufhGsnX/AfuZpAiv9Xbh71SehBMRG8Ltc2LH8JizktzjnEdtxsdWFG4lEuGma3MDeT7xKbRDBM3KlIlKYQFUrJFYZ/k9blrQs2zUMHjbNEAql+5IQ9sc2x9c9DUVXmwUAXxoBH7ZUDBt/pD3/WKZkAXPwMmqCrfiFCxwmGuCkvgcw41YEhgKOxUBjJnac3+SCJZd+0jSM+wSR64ooNnxzcxOPxqIyZFLv40wXvsRN75H/HNI+WBxp2zYMDiZZTy+Oq5HMUMh0XeeIA3L51g1rt0HxyLP5CPig/4GMzUddHTt3ATZ+bs8fKxFfCib6mEBpAjQHYcIE9neh8+qiagI2zHF54ZJLlyK6ewzrnAus7CktTbyttRUxiiE9aS2vH4FAtf6HmiANXV2HIZFMuiEUAtQQu/pSYsmOLWu7YNyawHPRkk+/2fnvbOOj2kfAF5k5a0jAN+InSHnM96wmIGBoeOYANcGfw7doTKBPhXHQUOsB5OyOjiiX4l5U+4ZEsWzBxm9vn4pmltFXFmx8n0/GIFMJpXrp57AM61RRrnBZOBxm06efwKLRqOE4roXYYF5TiH3GLyKMlQjwUeOT2m+0fhzs+dFzFhVsfDYGLVCIV4FDyOgpp0HkrPM5qjtyErkQid4Ib7XuU9PLuhLG1QkLCYAa0s2AyIe5YZ7jYG3GYlHWPrVN2R1q+CBzzBvXsuD4toRUqGJVZQlypplyWvtUBIaGieVG1clufmdHx2wYDxhUaP+FMDryfxhE+9FzFmDjj83mD0c+DlD3pM94fy0E59EDGFgWupZRCOSp94HqAqzoGkCq44xdjr2fSiOmtDTjAIAz6vnjkfJiUqEegxCAobDK+vo6NFmuREFo5DJ8mX/JaO6vez69E+B79n88tG/rnr9wyJ5fLL7U/Wh4TcJNQjDndIiceR5qAkdrgnDkJvjSj78HnRtoHoGPVRPkCwDdRLxj0dLZWIJzHQRYkWiURyJRFmz0cjZ8IQpWPmmoxsY6yQ2DBFYiRH2ff9oobslUzyebD86PMj1fEtpfoBpflqDxcwqQd1/pkCY4ncwB/iBQE6hJpk+AfOPboDTc2DRBIQGAsAEn4IOnI8pGX0SYEegjFQueeqo0ClYWvUcjUfTGcu1fYezUUd1M96QCgA/R/ts12hd54/xSUkYIfE2AQhA98wKONo97QnATfBE1werVZLrZaDVBQQFASW9EM4qqRbrkZEHtr47LCuz9PgUBonYQGQqoYr+om9fR0TCim2QAH07pNtnavZvKHeoVA/CNhqf8l7QlROYgJjiTgCEKQZqAIWqCXQ4CQzVaUZeO9Bl5AtCpxBn1Zhg9PFJ7+VR9VqTqH450eRU7Jkpz/YguIrW/YnUY5JQfItDSEzuMfPtDN/5EUBAYknxqc4BCcPZ5WhPYCAzNMALDh+7zLxnpvfMFQHFEDhaN9qkOqRd549oKVP+FKCus2FAox8lkcviZiiDgm2f/BNXqlVnfPjb+zPI1vip0znMDwPBkxARnX8AywDAUvQnufNADhnJE5iBPAFaov6ZpKPcKkdQi4H+GyUAygFVYbh0UkmAN+GhWT+JQL+xN6WYmdkoP+EZKOWYHPGBI5oCEQAFDGh1Eb9DAkI1oiFhwX4By8vjOnYCHd7IYgDxzhUPDWJCFYKXo73c8UA8ufwCiYWz8hLb5Su0XntItN8mA310PEU8DWmGSfv5pqcyBBoYc3hy4Fd5ywB1u/0F1bwzR3jQD7cR3IFL/IUgOaJt/bnlt/nBUqAzKWXTyqWTwWOqFZ7hahxiNfQLeIruRx89709cFBaC6t4aR6hen3Y5q/2Oo9i0c7nA9q1eZjR+kXGCozYEaHZDbWBIwTNsIDD8Hd/3kI4rPIai6BeALPzoFzeSd4Fg43nHM6Fnv5JOh8YmGBIYkBGe8nQTAACHJPXoPfOahqUPdpzoFwEf9RuizCJoaUGUKc9bp3hq+ym/8IBXyGEbmzpPGW04mUOigF3MG1Ls3qx9XrD5m6V41CoCP+luwuhbjOBpdh3UycvI8z9MJk6bxfcr1hNJ3ySKnzCMsK5UzhPOlyr+xZqWbf231CYA/jSr4uQj45qCnD4ypf4PIr45JMfka36ccbyHyYTTgBF7rNA6JATwAZ8EZjnaJ+9rPo+oTAH+LtjRPQFdvBA2nazS2MFqQOZaFHJVEmWEqKjUeDoFR38zAsWmVcRtOamkc0Jl7TfUJwJnt3qSBbMTxspru5qGIZIacNJ7OoSgwIwqKH9Nkap9BJEYHourHFfNypLsKNcAhr5VZAp0mNIbiwrEYOdLk5Oz4GcrZb0D8uK5eVGClGXCRVj+u2ZUj5VWoAfwKYF2Ikm0ESoYY7KM9u1INpwAqcsp7JJQxXZyGhK4UiT6p1sw7di+igm71W2fuNdUIAnXr2qlnsan30BZt59AbUgwmlPs7Z7PGJCLfMaTKja0q+nuZe6QLJ8Mb8IDYCb3mX9SJeU6hahwGSrW+/57rD2Gf34o9hEFiENKvvYQ4wJtkmWRCECyvmgNFW5be87JEB5evFjbCN1cma36ADPlawP4XNAMWhEPcfvXPYL2+X63HD7pZK10I8stJ5U/v3Q3OPhSAcMyAVOIIOMb96sfsUvIMVasrWNfWV6/dgd3lGxCuI+VvJ3dsEdabB9R6/EoXgvzy+fsIrP17IbXzGdpW5oKJKo0bd8NXrt7nX5Z/nyqPE0hOkVfuBiv5CETrwzgqEMk/bZK+EECFC0GmXH7jv/4aJLdvkbQ/DrFNCNH/96Hz6n/Ld/4EqdoFgGL1paAfPgHpxHqsNBOFwNVCcLBizUF+z1dqfz82/p+eJMBHU8EhSA0+AsnUp0G7vocseLVHCtWbzb9xzWFoqbsCZ9DWoSbwhGBjRWqCQmo/TWp/+5PSc/qEkI+fw9HWq+HrH++H42wkrYWKpcohdHz7B3sgbV4DdnKDpwkcpQkOVo4mKNz4r2HjbyE7gGo/ZkIazRmYH4Nvvzs9nOr3qSYARHqWjME9Kw9Bq/yA1gRoQ0kItqMmOFheYDgU4FM9/zml9qnnm2BZD0N/eBV0rhxQC0KHWQjiU00AsiRVj/nUh/sA+q+GdGqDB6REcnt5gWHOmsQM2vd6vpC68dPpR4A1fESN9/VSzhEVriYAQVLrBGj93I2HwXZWoDrdALF6IwMMy2AO/PsHAR81fvK5zZICdeien/oFDvs+Cp2XJ/TIZsz7AmrkqU00B9ceAYshMEw9nhkdbPeAoTkxmiDn/gGbnyS1r4Z6MVMBvrYpV2m1rxgY1U7oggLAWI76mIQzIznAVxpJQwZ+GNkNCBhS/N6BvmsglYwHgaHdVXpNUGiop9X+k1m1Tz0/kbwOPjUywFeI8i5ao/46jgvS44j2CATV0GQg2tbgx6/A0sNAw4D/08gnfH1geO/NXVA/+AGtCeoVMEzgENEukcdwaA+fp/ZBZgEfs/yh3ogAXyEquDcwEPeH9odlNgRNnjVyeimcqkgUhFhvbKwRzDQw/IcbcTqVXYU9br0eHaTdBGkCdBYVGxgGAZ/MUfvY+Gq7tlL7j8CgjTb/ulRmN/MYqeDeQGQlJVyXVhpz6W0Uykw1TgJSu1qFXt1LzpFk0hiAsZLqWQQM0VnEzBVaCLSzKOE5i4plDoJTusGen1KNr9y7hlL7gIDv3o8OasBX3Agh+maO7HeQaJe1i+aANosGpbISKQ8tSzRj0tvYltyxY+0gjIs8YNi5shtb2xOCXLfxeDWBf533RTf+PvLt+41PPd/+uVL7YwR8haigAKSFcxCLst/gOJuYTkvXdSp6i3jOfDi+J5NpCrzIGGcCOdrpnTbegmtgSEJgpa/KBYYbxzV3cAzgMz2b/+xm7eSJ+oBv8Dql9scI+ApRIQHg27esfw2rbzvFiLAsnCFLpRUWyFdRlUA5la2jlMmBwUFG6+EQyXAUhF/7p8J4KeMxvP4QGPYHg8AwOHcwGiEYysOX3B7w8DneUG+cgK8QFZIkDSqkeNiVSvXzo0d7cGTgqBBxfoHLPTFSCC2jxpKJRIINDCYENwysPveIKeXvIMtXUR6tnUXX4dxBGj2GiQ2e2zjHHIxECIb07VPPJxDjA75+51o11Bsn4CtEhQRA7R5J9R9ZLV3nGQMplUqLw4e7VbNzzr0YwZ7NkhM7PAxWbE7lYbls22Zdh45QxFDHMEOGlOLbGzeu3QfFDiXvA0PSBDx1ZS4meCIgBGJIIchtfBEA1dx3EgAADrJJREFUfN6sXswDfPVtHykW4CtEQ4Z5P3DggDhp9mk7sYxXYauHU6mUSxUcjUYoHh+dwirBDFAlUji7ZDIFB7u6yGS5ITMUcl17WwqsvzuwZ08CSkJxFYIK4vOTsOSq3+A0/DsgEp2L+MB1uvYzo6mNmU1N2J28pVpQKDABaMAXNrLjfJcan3p+isb518A/XpnMPq/4NFycf7Zvzyv7Z86a8wbnxvvRnhoIruwEjqkIYFEULhQEtApcccNV0GhW8pcqWOazlCiYcLSnlx3u7pZoit1QOBRCF/l+x3U/9Icn1r8GAEVXm1m6S2+4vH9lAi58z6OIPM9DTTCHNmXaXfs5r2tiZksLZDccSH8FgvqDlQe0EDW991VIPf8UqX29mIN6fjJ1LXzl+oQyN/F4yXra8eyiCrm+8KJLVjHD+C46iBpRC5CJkAgQ0SXOKRqXYsTDYIF4IqUgf/MmqD2dhEsIp7i2I1AATTMUBse1twvHufapjeueh1KHjM+SFjLacCojayAaXYaI3caKMUNzzqCcQZJThjBDx36kiHvgoEsvOUA5g5iz9y9kw/z5fOz5IRrqWTABxEZ4jrxw8fLzEWN9AbXB5cQFOYoqwQSQ5tH5ApxedPt+f9DmX9u+6dFDMHGNrymTROKhqVgx/4EA7gO08ZQKhvacmVOnc97QghNJJgjbonX70jn8hsQGBwihDaB8gunkf0FC3KJsvn+/EtNIu2tGjS581/IlaA7ejVrtMjw0Cw+FFJzxne+lVQAqaJX3GBrjJ/HDDmzqXwlXrN0SX/tCfnknlryo4p2rw9jFO9EkfBpxQQSFAFRDC/ygx6ucQq5jjycJBkT6/Xj8q3DXqq95QG/Cyj+a5srpUR0dHWZ3OByps3g7AqAYsx2NaUJmyUSA2VxaEQvC6TACUdZrGOmj8Xic9rz5lWV4ZSynaso23t0Png0uvwOPnI/fToFQNIS9nRqcXimUg1dQHWwBN/R1+PJVu6EMNJbG8odUleQTZt5r4lT+8JQ7+fT5H7RDKHQOVt004CyGpRwEQx4EaW1X/oTsNRNep8XqreXwD0+GmSmGowReKDJHhmgUoXfslIWf8TQc19evgPKRWr9AFVeqnj9+HunSV6dwmBbhcEKbV997AN5slNCVFrDt6DBlz/BXMo07egGgxJHxeNny3Q9Bvj/DhSIQ4Zt4ZfJYdGEfjQDk2KhFS999muGINotDE84bhPxlZLKEeYRynsE4jgBkf0TwN+LxR/cPVc7RPiJwLVu8+LK3gulMkZI34qDXnEgeFbkyybjscwyxb+vjj78ZKKMqBhSBRjUMfNvbLqlvbmU3SIo6JcXbsRH+xjRMTo6gCU8c6dI6BZdGAHvRJ/QnnPhds3nj7x72zhqLD0DxeP75S9tC9eaNHPi70O2EwA2moWc5M++RObNUFHgGrcVA52AKv+xGf9c2nDP48ZaNv1/rnVEUP8eIWVnQccmV2NJfRsfL6RRJg7xwQihHtyvL4BFiOjoizVUpRxDltMNCrE2lkp/945Y4+QNGXUGL37X8BuzbX+SGOZPaW/MoysojLcpB55vmEQUenV2/dBKpzz39dHwPFEEI2Eh+X9Bx6Z0GZ530mXLz4ZuMRqMc3e7YAmoOIJA4srT9w1MAjALaU5vTgpV02hJYV0YoZNL8/wFXWDds2bDutzBCc4A2P2pD5F6s5Fsog6eg5EPIEk588ZDPI0wMj95sgR7TSloG6NJ8ByXHRHc3w+mXMKXC+QtOfV63adPvN4+Ux6GIHec3iY3/JazYTpfScAnB6mIx3jKlhVLJgKmyiXBv6V2JpwE8Cs4FUO+kXoozgaz76FFp245rUOow4aYEk+/Zsn7t+uPcTvG4aMll9+NlN9u2ZeN3Xl9Xx1tamiFModYmmEdfz/g8uviHvMmDiQQ7erSHlrq5WFbTFe4R4fKLn9r46HYYB7FhjssFS5ZfYTD+M+xsVA7W1trMp0yZovzvktYEQPlJzwyCtB2bdXV1y4GBAVVBKB6vybS7ePPmdTQjWEhV6sbvWH4LqvzvOA7OdaOundo2hbc0NytFUxHT3To7pgKH6XQmOaaDmimE7u/nByB10bPxeA+MURMMOR08f/6yZjPMf4qy30o9rbW1BSunzV8WliM42WXjMGHTwUEi4cSeSuniWNqymIX6ElVlq+Qy+tqe3b8diseFCy9+C5hsNTIUo/UZ06a2ooC3UE7iYzpG9tml5TH/eVkeBTPRzY7aiSVTKW5blmOGw9NNlyX37d39BIzRLA2ZODLaaFyHlXoq2iBBFdvW2iq9lUDs2IJmU7SUmlgBHUzHSAhoYUj71DYylCZOW1OSw+sWLV1K2RTye4bmO2TcbnCzjdIiNzc1QEtLixSOOOY5uYJXWh7zBSF4DHs8ZXOR7e1tjFK5kVVG6/Sp+R0dFAV0TOqqkABgDaCzB9hyrsekoqW5iSmg5zV+cElWuahQ76FeEolEZEN9vVqjjcAwKpzQe/1LApfL+fMvr0OOluFRqkTZ3Nys+NN7YSqLx2BZ0BZTBhRZXxdjJBA4t9AWhfBy/xIYJRVKGycvuCh0Mj6W0sZSLl6OlTopEkd6lcUaGupJHagVrDhYfI9/mveuJrPC9elz8MhcNP08hvP1NKLJX15eKXSMQCJbTU2NklhUUIUxn8dRLxfnhb7joKcdkV47bQiJRELKvvoLQStlOXiQ/AoioneV7FInjqTaOjnn5BUr9MIlg03nhtGApkMg2kf4l/HyVZyAE+XzSAJLSlmJhGSzvdNG3TiFdwYZvNGkBQsgHeWLUFsFFfqpyMohypZLl9FLHEl7A2MXXHBBk39ex6FDWgAkTDEMk/h1aNDgmbiJGcuOkYJ1TyNTQ2s5/CYbUbL9tRCjovy9gfqNfPv63rS5Ykj0XYnkF1EvUtV7XaGhIeb/jpM86gwcIYSYt7CUaT1akeatEKlykmjTcJx2cnIwTjxxfxjGQMdNHCknaeJI6fkM8xNHotdPfRaKRdX2HridXDwiXPU1nNqSOHfugWKMAo5NHAmTNHGkT/mJI/v7+9UBA3i2t6vWn1w8Mj+1I9POoj17ZsNYqCBqlH/diSMVoWbInhA4Pll41Ivg/EaSbPr0dNEcQTWqIqoJQJVTTQCqnGoCUOVUE4Aqp5oAVDnVBKDKqSYAVU41AahyqglAlVNNAKqcagJQ5VQTgCqnmgBUOdUEoMqpJgBVTjUBqHKqCUCVU00AqpxqAlDlVBOAKqeaAFQ5VW3iSAaTnUcir9gCIHIgUoyNIX+FiSNBsmDiyG2NjYoJ19vsqs+fjDzKTJwOyUG+Mv2VYuwL6NSb6SZ54khq9kziSOzpwcSR8729gVxveJU6jkBWG0weHrWiVjwKYHMPzC2GBuj0doHypFCBso5NHFmpPSS3XDqAlLf503mdJ/r8X7Z5ewOx0hJCZW4A7m+ErGT+iPK0lKQgUqrcDKz4HhU1fdQ0ZOJICsKINzdVVo5A4shK3x4uVdZQKW3H1Tu+JAzuf+qpZOZEL/2KK6HbcWyg8HK2Fw8wuAe/Eim4S5sCGVEIOU979YJuO2O09ywoAAnHfh3f9tL++VQqLR0/cWSF7pwL9gwqJ4WNU3qLEkcCe847LWMG6A9auVfx4yE0BZzi8LnC1XstK1QI8nlMJFIauyiYAzv802CUVDBx5HNPrScB2EZBFijYUiKR1IkjWeUnjiTjPzAwqHqHShwJ8Ev/VO9dpYHdvOGxnXjgRS3kliBB5yqqSG4uv0qg/NA1tLO9r7+fKYgjJQXq9Xkcb4CILCFG/qmrgYBKHImCANhZZH7OvnKRHCJx5ODAABtMJIRhmgyLv9817N97lwTVl78X/CENpSXv7j5KUTmBsQpPjmlw2dfbxyiXo2lQFA+x09yTfhLGSIVshuJ4357dL8+cdcoi7CFzSQsgFuD19fUUNpXiBZVdXQYbSFeMQWFj2cGuwxTpVZihsOk6TudTG9atg2wqGZ80j3Xh50+qb3wf8jg9bVlCuII3NNSrMEzCG2OVm0dVWO/5JvJIEUPfPHyExrCCm6YhHHHbpuceJzM3puSY5jC/Scfgf8+k2IDPmTYwOGiLg2+a7VNbVSg2f+xcLlDoV4oaqmCv7e8fYIcOH6HQsS5F0bQdez1zBr8PurcXyiPAYNcuS7bPvA3H0b9BIWjo7eu3EQuaU9taWSgcUoJebh59/sjQ9/b1IY/dFCMZBZwihTo/CfHHHgYvtDCMgYZNHPn6/71yaMasOS+i6n8/9rAoqh0bJZBjHVPgKEkYIecC9aeUlSUh2BkJuSeSSeju7mFHunso3qPrVcxOwewrtmzcePg4N2T79u7eO2PmyYe4YVxOox6fRxd55KjtSM3mXKD+lI7HfG1DWGZwMIH8HWVHe3pdGuEii6Zw7c0D0lr1dHx8mVGPx4mKsbvgoosvwcb+T7SrJ1qWpYJHUhw+CsSkA0aXI3GkUB5LiqhNA2IsC3biEB6z11muuP4POmfwSOLneskxL/tbbsJ9eJs2yphOmh8FQGVGNScwOWZWs+Fo3BUKl0iPR4qNT3WOo7LVIRm7MR7/RQ+Mk9gIz5EXdiyfix7HO9Dyfpyquvyu02zsXqoUrKh92Dm+meo78r1t27ZRrxhNLH3F44KOi8/BOr5DClilAmJXGI9Cij8jTvnXzfHHfgDeaAbGOY8xUlHOPGjx4qXzpBGmpJHvRZg0G99j+AsPBhUqGamA/bo10EGNdl2ik589i039CLMH45s2bTqQX95RUEZgLly27FxuG+/Fzn8p3moG9r8oqAGm74mB0lGQR3LJSUAvJvsjN9jPE27yyW3x+PHM2qhoNKwUzBc4f9myZlQHUT8UWyAgU9GJZvVoYod8+7GY2xuPx1O5Z1CwxDXjScFWUGssWrRoih2JhCeCR3qGiLmsKdkse3qae3btWpObQ3gF8rhmTVGSYxGNhZGcoMtQfipFeaqBx2NuPN77yMDnUpEs8LyJoonkccL4K88At0YVQ7UlYVVONQGocqoJQJXT/wMAAP//o0zNpgAAAAZJREFUAwDncn+M5hYE4wAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;扩展管理器（Extension Manager)&lt;/p&gt;
&lt;h2 id=&quot;开发工具类&quot;&gt;开发工具类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#开发工具类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAANCElEQVR4nOxdaYwcRxV+3T3nnvGuHYNl9gCfIVYISf6gCCRCfiJQfpDgEITylxApHFJ+EBPCESQSrHD9AgkZxcRCRPAHAokiFMIhSGIFHCc+yNrr1frc8a53d3Z2po+8V121W3P3jNfuma33We3u7a7ununvq1evXr2usYFhNGxgGA0WgOFgARgOFoDhYAEYDhaA4WABGA4WgOFgARgOFoDhYAEYDhaA4WABGA4WgOFgARgOFoDhSEBrsIDRDQiiFnSaHLeBrUS3giqrI9dBo0K1oEj3tX2poaGhTBAEFiKgNTA6BooTWudyuQLuKmqHic8AagihFolUWBC/ZcuWnalU6h686Mfw4jtw1ybJPt0QGJ0DxQmuibsZ3D6G268Wi8U/TE9PvyOLrXCrUMmiKDA6Orrbtu1H8QL34jqtbsDoHqgK6vv+Mq5+77ruN6empk5ChQh0AYgDY2NjX8KTn8FlAE+mC7l0EAXAvkAXAXkTJCNvCazEJIQZXB6ZnJz8NWgiUAJQNf8xx3GeIOIRJVwS0qzoF2bb38EINLI07qgSJ0kInuftO3369HcgdBA9+k+QPzIy8oVEIvETPIEKkzeR0C60AmB0NHSulBZw08Ftj6wCiuCuwcHBU7Ozs4fFISqwefPm8Z6ensNYqI9OwkKOUhI7fd0JzSlUPFIz4NMal6VSqfRR9AlOiFqezWafxJ2DeNylmq/6E9RrCAURku+6AbAr2NkgphIJSxJOIqBdlhIEWXviuA+b+sdw+4sWmv6bsMa/jn+kZO1XNV6sHSQ/vxw6jUMDDtiWiiuwRegshJx4SHruiidse0/aFn8rS0CcKiuAWMZdt5GH+DlcMugcUBth6+RTzV9Y8uDD42n4+v0b4eYPpiGVtJj/ToTkZLkYwJsnC7D/uRk4OlGE3qwtLYEWKcJYAVqALFK+18Ju3yu4707aSc6Cuh7xu4Q1f9dYCg5+eyu878YEFPI++wIdjwDSWQfOXSjB/d+agrdPFSGLlkBrugPJNVX2v5EPsJ2EIUO7gfL0qbVH4cBX7xtG8pNw+bILSdG2sBfQySCXL49cEWffQKv94PemIdBMNll2aQhoxw4SwCbJeVnVdr0AhrHN37MtA8vYDBD51CRwj6BzoZrtJLK6nMemG5vsDcjhPG4nnBXOLC0+cGNCmf3KPj4ZBAdPyqQsoSrRJ2DyOxqKWEu6aeSvOaLSWnoZNShEO0U7IKQQVAT7FeGr/Ulg8rsAOler/JUXUSO5xHlC1fxaUT4ZNJDbwOgSKK50/sqPK07DwADDYLAADEeTnMDQLVBtSdzQvFf2R9YIDQVAvgJ1B+mZU/fCseN56BSP8PBzUFiTPoJVPUQNjPZQVwCh9xjAhn5HRJIuz3tQdH2IA+mkDf09NjjYJfUw1EljE0S5iktw97R91BUAPVAP+X7mUA7Dictw+lwJZhd8WfOu18MOib2h34YPYGTr9l0Z+OTtvbDnQxlhmZaWabCKm4argTU+Pl63caeHurBEtd7CoALE1gSQ6S+VwvVgnw2fuqMXvrZ3I+wcTcE8itK29SAIC4CeA0X+Zhc8uPvhSbHWIoGiCMh08SZNgIUP3JF/h0scoDB0Nh1+Yqr5z/91Hl59Mw/7HtwE9949CIt5EmnAImgDTbuBlB7oSUcwLtC9aUiTyCdyyS9ZyAfw5afOwY8OzkBfTzjkqWXBACMa6gpAr0WdUaNWo1okhGTSEs3BkwcuwcG/zEE/WipdBIxoiBQI6oQaVdntE0kO+K8nY8Pjv7gIR99dhgz2VvwOiVl0C5oIYDUnkCoVNQXudV48LxzMUF0+FZwSIsC/02gJZuY8+NnvciIXTo18sQiioUkgCGLMCWyU4xaWIBG4+Hd/rw0v/HMBjpwswE3jafF5HZuj3FHQsBcQa05g8xw3Wc6CJHZUSCQv/mcR9uzMQoBd18BiXyAK6gqAavpSwRc16tlYcwID+PQnBuCO3dmaOW4qb4Eq/OHjBXCL+Bk5cyky6trJ6pxAD9tkuO4+QMkFkY+octzUZyv7rGgFUtj+n8Fo5fyiDwmbI4JRUdcC0MPfOOjALdszWPPjyQmMmOO24qvk5n0crwggiz0D8NgJjIIGPkBIuGjzIZ6cwCg5buKzhu8whdFKighyDyAyGgSC4s0JLL93SKhfO8ctzG60ZMp6IKfCCDorl6FT0bAbeL1zAsuJCokX3T4I4wBJx9IEYdU41xJNg2iq3NCH4PyBxmh1lrBrBn04V4R08R/1+ykHwMV+PQ39zsnh6HqJjnRsDp3AVNIW5yYobsD5Aw0RuwB04mmLIn/ZDNZkJOt/7xbgxX8viu7dmfMl0ddfLPgiB6AStI+O3fPoGTFYtJXzByKhIyyAIsQXUT0H3sK4/s8xtPvCvxZEEgqRlpQOoCPD0rWvgV1G7AlcwtAwBY3+hNHBH/82VyN/gEcNFWIVgO7kERdE/sE/z8Hjv7wo4vsDGOKl8HPo1Kl8hKCmQ6qcQ/IBOH8gOmILmOvkU83vxTH9p38zAw/vPyfCv0S8iPV7gRzmVWc2etlBDQRx/kBUxCaAMrOPY/mHXpqD7//qkqj1NKrnenob3U4N5fyBKIjVAlC/nsbwj50uwhNo9mmgh8b4ywZ7oL2hXc4fiIZYBLDywOUbyE8fvAQXcp4Y2/fLamTr+QicP9AaYnECw5Rz7Odjd+/I/wvwEg7j9qHpd6tqfiv5CJw/0A5iEYDw+pEIJ+XAy68tigAPkUujjYrXlvMROH+gLcQmACK3hGP3r72zJPr5lc5Y+/kInD/QCmKxe/SgybQvYNj2zPlw7qGqEb428xE4f6A1xNcNxGgcjd3PisicBZU+WL05isS5cpCqciGE+QNWWf6A61UKoDx/wLLNJJ8QnwCC1TgADeNW/vxEO3MUcf5A64gvDgCrNVkQXHG83XyECHPkyHuFXUuKDQQGz3oZ21iATko9YtvNR7CazJGjl6ncNg2cPG84WACGgwVgOFgAhoMFYDhYAIaDBWA4WACGgwVgOFgAhoMFYDhYAIaDBWA4WACGgwVgOFgAhoMFYDhYAIaDBWA4WACGgwVgOFgAhoMFYDjq/ni03KdNuAhrCv169a7d7v1Xph9oMPmDvn+9vRjU7Ptrk2gGdr0fj1Zv15S9brWGT8oKX85anfip6kO2d3+9rP7mUVkZqHjzCNYPonx/+RPygnOyAL58EIFuBagMvbdXLK3WwLWcUCmgD6e9nmVVfcjW71/+GhlAoahmDCk/R8woK+dCFuWt9WEConx/SbMlt33yAS7IB1v2FGi6NZpEgebsy/TYUHJDQtSNrnaha9Er2hv6y2fxuJr7E6gMlU1nbfjvyQLMXKn6zTxxL1/+BiG9SUy/jLYW3ynuJeL3t7S6fpHeDTyOy2YyC/rPyVvh7wrCD5+9BB/ZkRHv29Nr2rAGBjOQc/7dMODA2JYkHJ1YFvP66RKsdX+atr7ZC6L0xfr6HTh3wYX9z+XCuYLBKmti6BL0WvjY+5Pi9fFCwRcPaT3MEdDs+0vzT1yTCE4k8L9XbNv+uO+LeXhW2gaaUInm3X9rogh7903BI58fhlu2ZSCdqjNFS4ugd/YHcL1rJA1//PtC1fFa9791e0ZM99ZoihhqMo68kYenUDgkrN6sUzXrmCp/83gaFpD8K/PVVqLrEOH7y2ovVsg5KeBla3R0dDcefB0PpLUDQgS0VpM00ak0j0/487FroAAIayIJIV/wwxpfNUdA+f2HB5tPEkXCoaaDsDpJVDX55HbS/EFi0ol14QI0/v6i4aeKjZDPo4ibt4ktFMEBx3EewB0l/DMJoYmw1LSsamYO1w3W/FnRlWkiiNqSav3+VJKmfyP4K75F5fQz4R7xi6iwvlDv+8s2n3TgIdcJ5PrQqVOn7hOHt27duj2ZTL6BB7PSCjjKS1CW4Fq2j82u3879r8U1uwnq+2k8gqr9uCzk8/lbz58/P0FOnzU1NXUCyz1ExOMSYDlPxQWk6YBriWbXb+f+1+Ka3YQK8oXpJ26JY8/zHiLy8ZDtyPLO7Ozs4YGBASp0F4QhYmoO7Mq+t7Xen1yXIwj0WM4KVS5uJ5BbG8nfNzk5+VMIOfZ1MsWOkZGRB7DcflyGqWeAJ7rywjxu0EWgSk9r5I2Ip/UV/PMrExMTB0ByLcpVnCcOoE+wLZFIfBe3P4snp9XBIFhvLtP6hG6ksRIv49+HCoXCD86ePfs2aOSLsjXOXykwNja2C1efwQvcieTvxO1hGT5e921ot6HC6buI28dx8x/FYvH56enpY7JYGfmEeiyqSfr1wqmhoaGM7E4K3xAYHQPFCa1zuVwBdxW1w6r59qvOg8awYVUIbP+7C8Qb8Ue8+Y0KtXpRRucjcmVlQg0Hd+0MBwvAcLAADAcLwHCwAAwHC8BwsAAMBwvAcLAADAcLwHCwAAwHC8BwsAAMBwvAcLAADAcLwHC8BwAA//+nRoQJAAAABklEQVQDALMO5fez68cGAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;Responsive Viewer&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAQAElEQVR4nOx9CZRkV3nef9+rpbu6eu+epWfVLJpFu0bbMJJBSEh4AQTBwhiwFZ8kGJKT5Jw4cew4CclxEsfn5NgnMYkPITaRAdsY2yCDBQjJSBpsgYSEQLtGs890z/RM711d67v5v//e+9591dUzPVI1SNHcPtVV9ept9/779//3voAutjd1C+hie1O3iwzwJm8XGeBN3i4ywJu8ZagN7V3vfb+mi03aX/3lFxW9gVpbGACdBhP8g3s+cu+OHTvyq1evrmWzWQrDkIJgaSWjlCKttbxj33Y1nNOd3/8eRVHqu2tue6vfWrV6nahSLdP46XFaqCxQLpejX/+Nf/dhegO2tjCAa0zEX8hkMgTi4x2D6Q8umiPKSrZmwjd/brXNfW7er3kfMHQ2l6VyRVOxu0i5fI5mZmZo7w3X099993Hue+cNtdrCd+kN0trKADw4dZaGTEdHhxChWq3GEu6a/92X1OVI3qttyzk39mlFfP9+wcxKBczcoWwbHByQ3ycmJug973mP5m1qfPTknx08NXrD6UOHTtEboLWVATAoGKRyuSwDA9XYap9W35s1RTsapNVntqWu3Uxof39fM8BM1Rt1mjs7Qfl8B/ezQpVKhYaHh+mll16iW2+9la688sqN99xzz9N8yB38+gG9zlvbDO+OXbs/sW/vTdG6deuC3t5eGXxHALzO9R1tJTSAu5a7RvNn3z9x35c6xr3AqNVqjfr6emh+fo5mZ+eIfR4qlUoqn8/rnp4eNTIyUpyemrn6xIljJ/gUB+h13NqqAZzUYCAvVKJXwjdopdbP97vvmLp9/BawCYBmg3lDH/GZCc/mYJBOnz4tTPDxj3+cTpw4sXd+ofRvnnn+2XGq1b5Hr9PWVgaA6p+fn6fOzk75jsFpNZDNNr9ZGtvVGo3GshnR3ZN/Xzi2eZsKFMHHOXv2rLyvWTMoZsAzGSrHTuLHPvbLOOjmyYmJ+3LZ8NpDr1OfoK2jDklABOBeraTa39asXtv9utBrNJul5u/MxqIB0M+BgQHq7e2JHUKYPfR5enqapqamadvWLXTXXe+hO++8c6TQVXxq48ate+h12NqqASBxzllyZmApx6u5tdsJbGaE5ezfHJW47+iL7yjiXusAA+xvaPiO/uM7NEPEu1511VX6wx/+kJqbm1v72He+8zu8G15/Sa+j1lYGcET0nanltPPZ6lfTmsGg5bSlNFZyf+Yd9h/ERnPMgQbGhxbAOCwslKmnu6j27XuLnpycJH7dUquUj42OnnxdMUBbTQDAH9h93wl0g+de2N78cpK1XLXefM6lXku18+3finnM9ZnYZKS9UChIX8EIeHV3dxNHAHLs6Ogoj4HikBGaIlLve+9dijUBvf/uu6vebWRpz54s/ZhbWzXAm6GBJZbSKuntmjIhCwL7CGOnxhkoejdt2LDhQ7x55H/899+9s69v6H91jI4Vx4h+jn6MbcUZYDkqeCVMwLla8z01w8DqPNiE72A2n8//3GDtVqlU2SfIU29PT7Rz567sbbfN3cHbP3n//fcfPnn85OP0Y24/9nTwhaj/C/XsX8v1/Zbedv57cfvV6yYMhWmoVGsBYwX6xhtvoMsv2/3x9773PbpSmf8W/Zjb66YeYKWY4EI0y3Ik34WLzdtbIZvAA4CJwCGMOCyYnZ1VWkf6Y7/8UT04MPSbe/f9xL30Y26vGx9gOYTyJXO5hF2uJjjXscm1tHECKK3+fS2S3F9ynwDI0PKcOSwWu2iScYJf+qVfgk/w9+ZnZx/4wQ+eegf/vLavr2/V1NTU0/QjbK8bBrgQQl3Ivq2SQOc759KaQAn94eH72qUZTEqON7/BB8BnAxqRQri4ZvVwtG/fvvDEiZO3D60a/p9PPPnEvVMTE0/Sj7i9IRlguUR9NY5lK+Iv8gno/Ihmgg0EqBGQz5VKjc1BhUPGIr4GWy7ZpH/xF39BjY2NfixUauaBB77+HG+XUJG1QR+HlyGbjbO0gu1iTaDXzucDiAmgxd6/YUhK+QYJiqg8cxAJZoBsYiOSjWp4eIh+5Vd+hbZfuu1Xt2zZ8n/d8awl9jDO8BO0wu3HogF+lCHfa72eL82tTpMwQ/q72x/OH4gO9Q8fABqhXK7K/jpE1RTpkZG19PfvuUf1dnf/9P/5g08/UCqVP8TJpkcYXOqhFW4rygDni6OXs+9rbRcSDvrv7ljf3Jg8gCGof17YdGXfgYYCKYTkM605JyBeg9EQ/C+TQaJMG1RRC5PIqfZcd100NTObPXlq/Pa/+OIXgDPXVlr9o60YAyxKo6pzJ4VeTbh2rmsvZz9//6XAqMX3rRcxi0DfOskeLiwsSL6gUIDt18IMaJHsD6cw55kFMBWBWYJrrrueuvsG5z78kV+86duPPPT1T3ziE3Va4baiPsBrCcF+1G2596pEijNMVFNMBW1Qq9UE9MFnSD8YYHJyitPCM8TqXF5w/uAEYj/OD9gIAUwjxKdyXXOIWKQrr9hVzOSyX7ni2pvuoR9Be0NGASt5rnMfayQYEu38PWgBlwaGCUCCCHE/XmNjY8IMrQCs1LX4HB3Fbip292gGj9TGjZtI6SP/9fNf+IsNP3/3+/49dunpWT/QaExm5+fn21pY0taawBuv3xOtWbMm6OrqOmc5eDNo8npq574vhYQwE9xUB7tsJhq0gn+sXxAjPoLXZ3ec0QZ1KTQtMVo4X1pQbDo0tmWzmQLvvnvt+vXz3370kccrlZkFRhXzlUplgdrYLmYDL7R5Eu/DwviMSiHg/iA+mvMJmlPhrlTNvcAWZyanWWssQLsoVBStG1kb9fc3htesXvPJf/Vrv3H8t//Lb943MzMzQW1uF3GAC2xSFuJVB7kZTc4hBBPAluOFzz5C6ApGsB1VQ6gpgLbEa9WqVbRh/QZau3YtDQwOYK6BAnMwWkhhJvPle/7hRz9OK9AuMsAFNoDB/jQ2p9bhCMLzd6Vi/u/NMLEwg2iHkM+VATZMncwQwAk0Ex2fOXOomIk0zMTtt99OQwODn9i8bcdvUZvbRQa4oKZtFGAYwK9mcqrd1UW6dyf5QvzUmaTATP6ALchfxMczA0FDwJlkm69Wrx7WW7dujdhBHF63bt07qc3tIgNcQHOhGwjq2/IUkZvg5NQ2dyIATHYfx0SOeUwlkZmBxI4grV+/TtXrtQAVyJs3b56mNrcVcwIvNBf/hmmiziH9DYkGQHhHfB+AMthAXd7jsWiBNpqMgM0yK6Ml8Huhs1MY4siR45JNBDPAxLS7tX1m0HKKMt+oTfB7Vtd1Jj5sdxAk086dNLvWqkZAmMf9Rg5VMKZAUVpL+JXGYC4w2+ueAVq1/780gSEX6OzCP7+y2X8tAntsSxNfuVOSdht1wlRokHznY0RR+8fxog9wQc3JbHriSDODtwKTmjVBoveJkg86vQutvOBcZIBX0RIEVy9ZnHJOrSfeZPNnyxTkf155tPQiEnhBzVrsCxTMVsyQ8pOaf/cyjrTCkPlFBngVrZmg55th5GuJRccu+qQdSGAjhJVlgIsm4DW0pXyA5m3LSnxpFwU0qf4VdqAvMsCraM3l6UsROA4DfSColb8Q//d/U6moYKVaW01AJpvVOZsAQXrUNR3/MzHvor7KD2nV+XpNFzsE75z7tAJ8zncMqfNqkpVo52WAkVWr3lHMFwa7ujpqYSj4NHV3F+KMVze/OCaeX3/Jpn8xfvLkbx/ldOgcZ7MMpJllpsjEC0bk7PJxikEUC6cZwiOmvoAVQuIh0Tr12bxdoOptdf7z1DLGwaAN57RV3MlvdpurBwBIJChSUlxq9rB90EYwohgsNL+KIERKQCdsrtXqDWpzSzEAX1Dd/7nPdX/y9/84/Or+r5aGCkODFNFnIh2NSBEEMbxZC6i8EEiBI8NiFDFmDaY4cuAAHeXXSz/4vu7qKigAGIUCM0h3F3UzU/R091KxG6nPInXkO5gRGN2KTFczYJCOAoV8TJDLC4MkA0yL8u7xu3JgisXRXmWhSaviz6X2U5Z4pBdPe0fZt0F8Qcwo5hSgh/iO9/gYG034xziN76OBUjgCuJnP010s5F/Yv7+7r7s7Gp2YkKKDvr4+ean+ftXb21vne5zV4+PdzC0NNTJSOk/X0wwA4pez+Qd0R3U7f50jVWO0M7emXqvSXL1m8ewo7rySjtq8FpAq/pxjIoZ8t2CQIDSfQ3nPCNGRAgW5kFEbGhqWFCgWWwSzYNpUT0+vzLUvdBV4W5doDM6EcZ58hAIsQpnLMgPlKc8p0/idX7nOAvGJaKUb+BD33pifpmq5TLUq0sBlftUZ+69JjiCSQs+6rRes828VmQtQYyi3WqvaSaNmfgDWF3Kcot1YJrCgfMb2oXxId995254jYyefPTWJvneojs4OauiGnLNYKffQQu5RPuhnKmH4WabSC/z5V8/XH2GAqfGpa3uHeqeYew7+s49+fPP4qfH+3lxHf19vN99gmSrlstyJkUHDokZCJWQ1jT9g+QQVNUQeNX+PWMQjfq8rs7iCSI5Vm3ibnZ429XWWWbIZLMKYE6KDWUI2IWRLqTuZwAFKqrEqF79y8soL8yB9inX7Qn4v2AKLwBZrZKzpwf7ZbE6g1RBFnaHRYJDASDQZMnJ1m8DBqyrvsvQLE7O8UBECS96/UqVKaZbfK3bfihR6QhsKAzSsxENQIP1RXayduU7DErVhtQHGIyLnFIlGIGcuEmbI5Tp0nh0sFQQbMC5+gQk0cE9vL0zIre9+262ffvThh2+7dMel+2ZPj810r1rzn8x5ZR3LRbZNrlqdn99TqzTW3vuZPyz8waf/4Pcmps4OYzAw0ChqrHGHkasOLbFCKWgwWbAMEzZATbPMl9OUlc/u7IboyjIAmETZ6dVQeJAaNxBm0EyGTdQpsm2RUZMNSb3ysQEIF9piiiD+7DJyaJ0sFQVmFh4okVRTh+8YIGuXsQ0NA1Ak1zc4Oyp8DYGd1OId4+Bm85h1gOpyj3X7bo5tWHpBK/I564Z40m+ZE4DPoawwFojFCsmVi4PxhQG0sj5BZIiuXM5ARowlnQUpBo4C8pNPhhFyUWehEPT199O27dvpmj3X0iXbt5Uvv+KyXxhYt/HrfC8zS2qAXFfX9x66/4H39fb3/WmZ1Rl3UrN6VZMTk6ZShdUu99FKsRJ7JB0RDo3EKkDtseITdaQo8virGd82HZW8OghqTiQ5cDEPKjTMFJjBM7MxQch84oH7zp/feHuVCXj2zLj9qkXiGl7O3bfbyOYZodCGWRXFzGo0UyCMhM/QHjK7B9qp08zwsZc0ZtEeAwOX1VbbaWfTI6s1FZkuGWGg2OkziR5Tb2Ck3k1AxT1gsCMeH42Us5wiID8fYbVOAH6olkr04Ne/QY88/LB+621v79i9e/cXqFH5GT7gq0syABo4G+nGWr0aD5Tzec1gZMHLcml3c6EK4psMlGGAjKRJrYnwslzyJjdvK2Mx2Oi0SpwrdDSwHC/BgbWNdSbqkLZ3yQAAEABJREFU7FzJzcyzLzBZYCRGfjGfwTghpA2yA4aCQ4lruIqc2FHUQkSjrXQqvHMOqLzs3L652Vlh7og1SoO1gfKKPf3UbxYzflTGCkd6sJWtJXCOK7QYGF9TYkpdWjg2s/Y8EcwNroWxtns50MhoTBdFsBbmfiNTXeExm52ahkZccgm2mAEq1QWx9zWzAqZKHJJIBtIQ2Eq/rXIxmsAQP7CqXUyA7UNgiU4xMxgGchiHD0M5BvERUasUpXY9n83YQQzSDBCLUWC2OR8jlmoVq+BAuejBHGe228vFnrmOCSHDbIeuq8PM8IWWCpz0e2lgxwCiAXBd0eo6ITxZrRb7QDavwGYkUEkSKLDRjRkzKyzoirFRUj/omETOqVWsZ9E/jHGOtRRHjGpmaorGT52Kh/ucDADpr7L016XMyYZESlNa2Wo7eAmg5e5XxUhP8q69jiX/Kebu5pU2dNN/ZQkDO9/BZsioyLQGSNKmSaLG5M2NY5WAMiZ6SVLqOjZJ8TV1QjDyEDwMcSHfYU0gxT5MFCXLxznioUcZx8mxz6vscYE1bYYZJMRjzZuYHpUwnvIGhV/QttlQBs3tYc8feLsFcl9Z3ocdd3GyT4+dEhO4VEtMADUkjGtg4KDCjbgY1aIiUkmfKApk1mNMBlMqY5igYdV+THrbKa2Si7rOGjOjaLFFV4lysGYDkuI6mpxn8ZGBdf60NhM35H4jG6Y6ibXvMsUL0qzT9+VX78ZwrrX1URO6F5tKxzD8cz2yxLdBfWz6rLTIZ6smVTxeKmEE23FrmGSfrGABmZRGFenXiceFMzeAq4A+fO1yaYHOjp+R6OS8DOBKj+Adi0MXGtsuXq5V++KpwiRoK3EqSAEYCcEpsbeUBmccgIOD4EU74U3vp+PBAitomUVTS9248lSQLyzQFhoRgVEXxmcBs2GbncXrJFu8aKc87PbAOYHeO35HBKCjBMBx/rk9YayJtNVuRlhMRw0/JM6r3E9k3gNLLBXH/JB2ZbSnp63cNWS/yF4L75b6CYJomEJox9ocaxrXG/r8DCCDEwZp58dJvb0hkVpP6tzYKe/mnJaQ29E64VjlzYlzmsRKtVOpzkkiz8a5gQ4c8Sg5n2Mc8hhMBrnRSBjDSbVK6vPddWrVumEC10/nB0TGfAUBM7/tWyizOJ3UU0ptE6Wv7+A87bhBN5k328dI2f0pMbfKO4biobCaQyXjLhbNRg7J9XgcsRP3KWPN1eTEBDuvFTo/A5AhdBRDlV6/FMW2y5fWeAACK/XaOiyWo502cAMWBElnvN6lxs5xupMykWplQJ2giQGcrVaUnFfAp6jR9Jv1N7VjUnNDGXbotEqHVJo8J1AnIx7PALJ/vonwowFgF7DrWrcybOT5A1q0W2T5VzwWhKZgOZ2EpG6MMspgCH5NobmGcvoh0a5gAOA03DcwwOT0ZGN5DIAlTPiFqlez0DPFkuN3QsX/zLs4RHZfzTAnGEE+x5Jido2ck247FQSZlPBS3DE71BZbAJroCiITFa7iENKZGtyHW4SBiCiVlbPOmmNwNJOTyFEUuSsvbo6Ja3Yx6Pic2D+gmAFkajgAIyZ+GeEipTOarfwKN5s40aT2pbWNuuxxpBO/SkeJcoDgRXY8JOIJRAO48ceOE3i6SWfnkkvSejhAwyJcDZGi2CMOnBQbjo50Ej5pldTCR9ahCyynGo60nCydDu1xASXxsAFEnFoVwCRKpCz2boLkPuL/FlBJhMQglJY6sf9g7lPHJizWFugzVvuoVMnFo4aXtD1XaPAMZQiJHIfOBNbzT4AfN3aySflrBRlV7oge2vBRWeTSOceRMzn2+gZnSZBCkXi79nLdIG7yckkkaAsZIiuU4hRaDYhjpzkU/Cf33PPRP/yrLzFGr76+JAMUO4sS6wJAqILb48yjOZEEXT4Hu+1WU4RWEoVzbXiCdHAd8CpsLdWFaGAydBj2NBNkXVQpRMiIn5aNwSTAvwCBMBgZRuKUjmI5EQi3oS3cmxF0DLYuEoQvJIfOxXINp8jcGMUxRt3uphJ/w30y8Kax19iKfuC+crmMRBgmT9AQFSx9DpW1yQ322E2+Afdl5g9Y8Q2cOnRMb/qT68zL5oaMe93C7Ia5JHpB/B9Yx9CZ48j5ODG3Wz8i4qyqknHGTPJA8f1kw3fS9MwPeY+lGQAzVQH7iupumGyV6725hLV7ytgWY0sbcoNKRMWooEY9kjAkIxi3ooVyRRgqBB6fz8pnIGpg3EwYSdThbF1YQ6ZNM+hDMtDI/gFTw1jg+KheM545PP2IM3K6LsfJJEsOkahWtRpJxbYxbjoOqZ3PZWFWK/3kSXDssesEoUP0IxzRML9FNetAwjnMGJyfiZLRjMtnjGmRMQgMMSIy+QKnpFw4KY+hy9jnK7CGaPBL8isWrAJCC2YDLZTVDM6sOiiePLccDJDNhZy/Qf6ipDOhZkxgITcxfnottWieCaiYxY/IqWzl+4DWc3cDY713rVNeNd6rfLNhzgxAaYGhyPl5Qa8Genqo2NtDeYY0y9WKZMbM6lkZM/OFpanE+1Zn5+TcsM+9nBaWadYgPgYiAiikRcIy3MlqUBWJQUpWZ0m0RMCD3UByRjllrwyGbmHUxNAGxsfQ1lxRYgIcS4ha1UbD9fC9V5kB5xlrr5kFHCTxBKhZfCa+P1RDdRYg9TnRTlWsC8hSWGJQBmBMyEhOvsNkMiHhAgbxaE5OTzETZEUA8VvEYyiAjl1+X6my0ZqaUtGBTujuuNRGLMbE8D0pMA9WK1moVOrnZIBKxaxWIckP3+lLXPJYbWmL0jtQ1u4obwNDg7Qwv0BnJidpcHiILt+4gWYYRz9y7Ci9cvQIdWFdfR7MrH2kXMjvyOfDfuc4rVliBihzBhKOVJ0HZnJmWkzTUF+vdTj5Xvm3ctUwYz6L9HBeRmGKkS9oJDn3Ihc88ZL9CCtw/VAJI7hR1dYwg+En2JYG7APkOjjlnOkWwtWY2cB8sM1QlsgtVJmRp86OSwLLSWzQkRWtCR9AY5k4OIzMHNgfqdwA2pHPC46bmZuj6ckpM0V8YIC6ue9l+0wi0c7OGfQ7qBJQTYjKzJmphbSAjCaPJR5sOc30OCcDSCKI7W08m1V7A2eoby7rkEEzROTH97iFMjtVSF3CoJ+ZmqTZ8oLk7Dds3kRXcoc2b9lCI+tGpEoog5w+0rNIiDDh8MCpKfZaTzF+feLECTp54iSdPjVGU7PTrNIWeFByUoKGdC86jIKMEucvIIE5qRXIGh/Dhh/OQUwiB0N2a4ZjiTfvQSz97nfPHZXoCNpf4fxBw2bmlBC0UWtgNXDRDLLsC5uCru4iDQwMChF7+nqE0CAMHFLUE5RRZ8GERZ/HThynaX7HWGAV0UJXUex+jfs1xcRDWBk4h9qFDLHpT6qZtLVziILCjDFRZWa0SeQEzpw5HwOYpc0ClcS2sbZUSSTgUjDOw/VDHWgpSDsksLPYxWqnTB3sW2zbcSldc90euuKKy2nL1m2iGVDxE3QVkztBHp7VK7zWsdFROnjwID33w2fowIGX6Sh/Hj12jOaw6DJsJBMa1UJQqzAbuE6BJaWLr4WBwwMd/XDTIXC+fMeEdxnnQHtmgGw0QrEvkGcJRUkefBrca4ZNFAx6DYOMqiCpbwup2N9L6zZsouHVq2nd+vW0YcNGGl41JJoPDIoTV6yw4VEyxw4foSOHD9LRI0eoxNKP63R3dlOlNM9jwQLEY9IJ59zC7w4kSYTUf8Cl4faMrFdocAukx4EFnD516twMsLBQFQZwUuM434V/SicXd55v0lwo06B8oVPus4MJdOsdd9DPf/CDdNm117BXx3acCRiyaoMtneOOFVl1C7hhEcEMS/cgXus20K5r99BbbvkJ1ghn6YXnnqUHv/bX9NRT36MTx4/T1NwsbRhZR93MQAF3dIGZoMLnDFiinGaiGIlTiRYjTxs4545sWGvDLjOY4AiHCGojdioUUyDADQCkwDi40zOz4tOsXjtC23fspCuuuoqu2rOH+tkU9rMG6OsfkPoB5XLklqngF82zyZrh/q1evYpeefEl+sb999M3vvY1OnnyFHXy2BR4rHr6O8Qc1FF+hhXHLJGTdD15TO0+BHEZHgQCjHZqbIzOyQCVSsnWp9kwK0rsfpwds1wWq1aVDFikTakTHKGfYMK9613vpi3bt9F6loIACybCS0apOB+XQ7mXFIWyunSUwBjbUEvhd8rS4No11LdqmNZsGKFdO7bRQw99kx765oP0zA9+SIePH6WeQpH6e/ukZhDOILQHbqYT0unMAFF6oJz6l1GMvFjdwdAW4yATlJu+aZHGMJunjq4use/T7KvMMUGy7PDuZsLvu/lmuu6GG2jLzp3UPTQkWirMmHoEM56mZhA+lFQw8RUK3V2Eur4gX6Atl19OPzs8TDffcjMdOXiYvv3ofnr8u9+lM6y6L2WzmYeZtIzrm7SUCbDQO4QKGgDPK8B2+ABj4+PnZgCnAazBT6pYHYjiDaArAnGev3uMGpJIb937Fnrv+3+Wbrn17ez85E3YBNsIm83OGxgE3rDC08VlhSzv3AKlRib3jWuQAU2KbEeLA32U7y3SWmaobz/yCO1/9FE6ceQYS2GZVvHA9bA2wKDDg67blbf87J5zWh2/iSvr1L1jaA9rjtO8TgMCCuYDoL3KtRKbnSoNrVpFV1x5Fb311tto15VX0vpNGynHqh77RI5gkVn1Q2oByfgaYC4DqAVQLOzLzMt4rlq/gVZt3Ejbd5+l4TVraXBwiB77znc4q1eihqpRzoaGjo9J6xTxYyfXYiGomcT4zYlvdfbcDOCcQCeNkgXUBpfWSaqP4jxA4JsBLQgikLWdO3fRjt2XsX1n4td1XOpkHJKqOH4Am+BB5zI58i2J+Bh197RPY1I0Fl1ipzOTz9D6bTvZvq6nrdu2ShHk/V/5Kh0/epROs5TgvkRVZupSw+ivyGMG2+HtTiPYGF45NFGTKyAxKKQ1I9YUdvP1QPRZttNV7utqNkE3vWUfveOOO+n6m28BkCJnbdRMqKik9jBr0LxA27WDMxZDIYprEaVyuCrOZcTHZtneF9hs7L39HbR923bWoBvpT//4cxwdzcpikgaLSCIAF6WJJrAMDTrgehJusqChNoCdyZZFAfFyV7e9/e27SqX5Dzz7zDNSGYRYUtv18AKH8JEBT0ILxoRuDVy7gDLeJ6dnaWhwkHZffqUQcaFUEtuZ5wFCuAcVH+nk+YK46UiburaGXW/H5OlDW1ZuQKeoWubORTKwvX39tHn9OikLr7AdhpcLZ9AFQtqeX/mD5DGa8/JDIUpzptAyh2Wchs3Oofx8bh6SX6G169bRT73rXfSu99xFV1x9rZysViqbVC7vByIKo7t+SM4jiJ1MaB84qmAAjAmc5lxHh1y/zteoMZMB+Opgf6iTj//b/ftpnn2NAmZdUbpvLpzRsW2wvqItNYOpKnDExffx+POHDy+qC4YlH1sAABAASURBVExMAHMYQhLYKSEu2xCoUyGU8ookPCfEVQ6FdpkzwEiPP/kEqXuZ8xnJ+6mf+WkqcMyvAeIwU0GFIhQKLKwJxjA1ASbGRSWLCqwbh+02VWtKuBn4YZsrZd48EOu3b6f3/+zdIu3jp0+jCkM+wxRlPKzdpYuTUNVk7GD/a1bDCT5vV/p00YNTqRAERzAw+ebNm+nv3X033XT77TSydp2hKErNyaweGktnQMn1mxq2yPMVY4ZkYqHewd17T0HM4Oihw/QdNgGQYHkEXRTZjKHLNOqUc+v0QiCLWBlz2sVMdJrH5/q9ez9Q//M/7wqr1Y+rNWvmFzFACSVh1Ur8uNfAGUSVHsBE6bu8uHOgQrHZWNDo2Wd/SJ/61O/T+PhpuvUdt4szmMXjVBs1wfZlYLOGQ0MVh7RCFC0mU1OSJxcO4GswU/H9aTAlKnQ7e2h4hGRlzkgAoaxJ70qBpF+VbO/VObXkogTTT/gmQWiWc4tsX4goBoEM02uBuDH/AE7tHvbyN+zYwffFfgyQS0i5LBfuUrMGQvbTxC5cIytM2dAVjoJxSxSw6RPomJ1CTJk68Nxz9MiDD9HDDz8sWg5Vyc0V0S40V00sgD407DgAW5hg9c/acoABpffWq9V/zrssZgCXDfQlxbWkE3ElnictZLts/m/esIFOsce5nx21Q8zBo6MnWF2+m3ayl1vo6hCzIoQPTVImsIMiHFuvygXMRJFA5gFIgiMyadgsgymaGbXM4dPc/Ek69OLL9Pzzz7P6L1G2y6zMifNXKxV345aXtMUwvJCWDNHB5ohElP0c2AS97Kt0LAyYqAIGQdEsngzazbhEH4d5GbvQI0mqOBLiyeJRWlnTFkmEJJogsJo0ngxCoq+ZKJQX1FDRPKv/8UOH6JscDj7IEc+JY8dpgFFQEJKsc+vkklJop/9FpTAa7lsgNZ+VyqRRuUlb5AQmIZ9/bk2pB0GrBHZ0IJFxnhRNsEPWyYTYsW2bxMif/t+foocefJDe+c6fpLs/eDdt4ZBJsXNUX5gTVZzJmXhVVJvl8EAmUQTiQcMJBAoIv6R79TDVWB0+/eST9MU/+yI9/thjfL2zjA52cyy9mkZPjvK+FTFHumFq7WVeQFMtX3rMcE0QtyGTOB0WYBxd6ydKXK1onGPpY8dPCMx97Q030r59N9MV1+yhLvYJCPkKNlENfgVQ7zIrKSPb8ZTY+ILQPA0zwURFhgkL3b2CM8wcP0b7H/4W/Q1L/sGXX2Z8o0SrGU/IoRpUStJaF3fGGtR+luhGW+1lK6lq1jmt5tPT5zwGKFkgyFXkJEigA4TiMXN8pryqHOsodjLsCzuNjnXyu2a1P84S87WvfIV++PSTdMn2S2nXZbtp964d4uH29fdRWOR4NQOPtWluH/dbsW0scRx76NAr9PJff5Ue/85j9OKzz4skQoh6mPiQ0PHT4yL9Ais3otTKnQ0b0ejkxg3kiz5GyOaZur0oshNC7GQQzC+QhBEzfBcDW2uZyeaZwACevsf3cZgldSM7aIj9t23dStt37qYCh4aphno8HgOTCkSAjjRo3vY1ogXWli+8+AS9/MIL9BKr/ZdffIHGjo9KbqSb0VJESjOs8WAwUZNginHTUVncLfvP0MTsE1pnEPkEVAnns9nWDFAqOSTQlB3HpVHOJDgGcIBDMyOQcXqgyCBJKGEqsiR2MvfWmAinx0bp5ZeepycY3NjKDtzlV17O8ftqjnUHZHHk7p4+q/aNAyeqfK7EnZ+kMT720OFDDBGP0Qus8pEs2bxpk1TKZvNG2qH2cxZbqDM0G1lMwTCASeFG9v6d2ZG8Abax2gcfQGPIZBEePABVjrFxDPwjZOcAN8OpPcuEO8t5i9HRk3TkyEF6cYTD050v0EaGulFbIZlBvDgWz2TdwyXqDAOXGUAqS1p8jhNdJxkK/j4jnAcPvEJTDNkiq9io1MQZrsFpZpegE8kt24eUL6bTVUeafH8gqTrCfkiwTbMgZZtK8RMNYB9zkqB7vmIxp099b/7dShWyY2AAqHXHa9AIHdyJDIdxCKVe5FDz4IGXaG52XqaMD3DcW2QbLnn/IGMrZZEc4twAc+30zJQ8g3cDYwBFJkA3J4NyfP5JlDtJAqVbOgZHD5AwkjJSpoWUs+cUCrERhlkDKpW5MA9M/WzgIhszB9IXAJGghRmjSRwBWFA6oO34q+QuDhyUcK2/r49GVm+g3p5eLPhMQwxSFXu7pU8cZtMZzhSOjZ3i0HWSJhicOQNGYmcZvsQAa8P+/iEO+eaZOWaozP5Alq+Hc4E25uETbrwpFkzPFUtMgNUEbgobUsJggLDJFCZhoCSDKgky1uQDUMuAJt0waFBbcIgWkNaF1DDhTYarizvSLSGNOEeIrTNmwQjsP4+sF9LRyGbZsilIdshEHWTtINlDJjamaJVZgiAlkg5mCYNHXZqbx6NZZUDkWO3N0LX5CwqSKEB8+4aNDkIlzGLCPxXP43ddD5nKuI6ExkRS8yA1gsxs1bJ55ktnh5nBDM33EjO4w+OFmQPt1Q2aaqtGZGYSo/Wh5kEEhPMLM3PUwR7/6k2bZVuJ7TYyo6jYRmJNe45gMu4xgGtMACXwpitmBcwv41OrtWaAaqUuM2B9fD9uFm0iDzBJQXhupHjwKkwcnLSTYdnurk4bGjEgxAkcV7KMUBDFk11QbbiWnZFbQyzcsGAQij4wKRSnZoIACMna2LnI0UCOB6kqv0XCEDABAKhkCjZKtZr8WCG7VnFIKNEMzDJsPL7D34gMezhjqgwkyozCDMLMHNqp5QYj0BLWlkumeANJKaSnQ/gRAC/hWHJ80bAs57BNbVPOMss6l5V+IEsodfyAzBHlsLZD4ie0s4CKLFTxEjJKndcHcJskpLUqHxoEEUZlKScQcwMdFGwSDFESBvm84L37ca7jQnk8KkIiOGR5g4YhByDPzw1MxW5GihyVqfTRZjYRBjDnZulY7jNIXSgdxeQGePSonIEzhKHBb5Am2PwaawQzTT0wkzhkBJIBimxSJ9KunokZjQkbagNwxVW8NkQ0eSIlpgj+AfyILJ8kR8azBjPg2rDlpgiTJM+va5p68kVbLBPrYsP8gU40rKGfaAkUtQgEbsEvMAOc3HK9IUwARxkREwphYmEkizeoFnrZSxiFGaMNkRZG3iQolVozAPJTQeA9D8/ilpAoMytYpWf7CnTuMAPLDPyHvDdSl7NTM+z81aXW0IEf2E8KQLIGDnaPV89koS47DDiCwYLzJsklW+IUIrOWlby/OHOoxHEl2vwyizg04smY2hZhysQZlzCxzqUyiQkzeAIzh7afZr8woZlIrxSZRsbmKzt9HX4KGLmhGjayk/n5LO91SQQJ2EU20aVUXNUsiKbUIZrv6EejVpHIJbJPHcN1UOsQWMwBqhsM3pC+RaKx3NoBhg7NDrmp2awLncw13BxMnKu8VBSASp2Z+VnxuHHTsLdAyWCDMCe+I2uedQfFpu0j04DOmajBcC6ktFReEAnv7O2SG6uicFM8E6P2zPTzug1XkqlXMq8QJsBqnIyrTII3zANTmjWcq0KzzEyQgRdP5nFtIFLOrCtUF/WupAppms0OMmEYgGGOOMCMsPVQh1Jvl8kJYwNCnmVHEw4sPHesY4RrA3vAPaH+LxdmxYSYRSO0+A/QQJ2ZjjjsyjIj54OsyTP5BXNBGpghG6eLdoN2qRpfAFXUGKxKtS7EFkZl5qiIlqlJcizLEUU2zJtcDYQI5qJqIPtQltDJSXEMd5Jm2C+a4v5jxRQU4KC4ZPTAgUZLBth5+S6Jpf92/6OSPy7yQQizZBUwZaQf9lkSOSCgkxix1UrKwhUPQN0iYjEwYUMV5Vb18P0Iz9Fw8+5Q7iy8bkNLkxlWJvwiEq0CTja1CxbDR/VLLeIOzkthKELDCY4ewMSrVq+RQUEVDgZAydLrZs4cBrGHNVYf5yvW9W+QUGmeHaWZ+TmJLHr7+0UTVHi7AZSMCpSJ6EBN5UZdWZydF0EqRhwNYzu8KbHbLi2pHRBFHqbie+A2UwkkEQytAtQgVjjBNidaA/6DPF0km5eQ1i0pX2JwLArMQ6z62XnVczMiyFNTk7lf/rV/ueeTX/jCY3ytSooBdu/YHR0rHrMLF1VlYExFiS07VnaWihd2GHSQ1bgK4ydkNeyy5nEGUSU5+cBjAnMC7TFJ2pvV1l47Zw6dkyVeWPXi/LhPN9tXlomBb8CdBXtL2Tkf18FeeWeXKR2bL5kFJpAcKXLfAO1Wy1WpXF5YmKf+gQHq4v0LHLHMIgSDloBnzgPtplfHEzyscwamxaxqA4LZalxy5tBMKlCOntJB5UF2KnE2U9G0zwjmYLObqVGTa2eS+xD/QhkoO2PpQFjixgJfMFUYK4SQLATMQ1GqljdmgC3bt+RQvQ57y/ZMdxYKCtO8ZjmcQ+fgqEDJmhAtsMxAsf2s20kRUu5g7z3JGag0YBE7eU3rA4h9tk6YTgpOEU7OcBTQVcQCUN2s4rqkY3As6w3nR+Sonwk4xeDKLEvwIEOomgcEsS+8athV1CKuYjQPT+gCADXLaeQXGH175gc/oDMvH6C1a9ZI/V4vM8MMx+mnOT6HPe1gxurEUzsyoZm0oYJ4uTjtTV8y6yAZEEvryCMkLXo38boZS3+M/IxkMjCmwrfBZqCLk0WdWD2N/ZB6DU8pNcWluK8uBqA6mYFRbHMGtZUMy9eY0YC99DGMzv5X5df/439+4r777iunGIAHe+To0cPXQJ12cDw7M21UCWJIoHRQiwAxUHmLtGQ2MjUBkkaVqpbQOE52HpuJPowH7opMHYEj+1wc4eZM6ylrsZDYY+Bg9bM6hheL+jZopo5Cp6h4MB+2V9jegechtVgoCXH6mYkz8h3Q813vfR/tuelG6l+1mn0b48nn2AFrsPQfP3aU/vizn6NvPPAAPcdIIwoxBodX0fz0jDDx2jX8mQUBKJ0ASeQmkEDlh/Fn8pJmqWSM8tx+73uM1DXtnxII+45HyGjFpgwhMwpvJRrKi0aDUEhBDgssgDMQf4r3YVSFehmI6iODo2DMdq1ZE9znXcNpgLnBweE/qdWqp2684cbfeeKJJ9Qrh49GHdlMsHbVsNhD+ATCz9rk6gVds0kWsfuQhcAsEWNwBBP6RCpdiuXPwNXiLasYvHCQMrk9XHjJ58xlO8FaEqqCAPLEzciENygBQxgJxw5gCSTxFEtv/9AQXX/DDXTHO++kK6+/kVaPjLAt7ZD7VfUKM2evePbF1SP08939tPHSnZyC/SY9+8yzssDlEAo6+Z4OHj5M/YzGyfqADbO0XGCdWDdTSdn6CCk1CxJpd4hcQvhE5Uuk0Wh4+6SzrM5HkPUXUT3F2rlcMxVEkTBxjnJ23QZUIs2xA45C1RK/MAkGzB/aiMs81q626FGxGXtjWELsabz+7a//6x0dHYUPjoy80vsyZ6QmWOIYftVFmARt6tgw2LayzThvdrI7DGMjAAAQAElEQVQi1sozSRZHdePvSAWRIs/WmQ+NKJlGHtiOxymowI6Aidp4oEw9YZ5VIIhfwuSRsqxnJI5gmDeoonSUiYSy7Fve9ja6/c476ao911GmUJSZRRVEBbgKD2IjRCiXkYHcfd2NtI4ZZA2biXvv/SM6yrkH1OQjKkB9Plg8JOebGPUt0QhMQpDMCySdTNRMiL5Ywp0T7CZyJq+giRGMH1DXJvJQgkHkhHHB+HOlBVlur2xnXNW573msqYiFKPkA+C8DQ0Nq4+ZNtHHTxs5GJpdSM4ueHfzIo/u/et+Xv7zq0u3b9k5PTSwcPX4iMzExqUpsV9mRkOfa4u6ydtVO+AYAG8iih3EhhIApKpFmDLt4ymHsHGq3wFRgyr8g6c65kawcmdk1kFh4sfCE4QjifJhuBRsI4qOWHgODGByzg1Be9dN3vYc+/JGP0BXX7qGqCuPKI7LaqcE2NHKAVxQJiNPXU8Rj2mjtyFpJPL3yyiF2nCq0a+cumRMAFese+gjzI4wXJv1xkY6yOETgtEOTM+xqKn3mSDnJ/gvn5/EtA8hBrgZpZkwX4/sHCAV4d4IZda5UlihF5kwUi5LE5N9Vsa9XXbp798JN+/Zmrr722qObtgx8+lOf+qNKWhSbmj57tufZo0e3nDo9updtyn+770tf7kTNOg+4RgzPA6CAU2PKlmDxdn4fNEINtW524SMDLpGdbmYWZzRLuJmwSfByO1BmfUBNDneM7FRxiTRCJQDSHDPhLGPlkHyIGWwaplQhWzfPDDHO4c9VV19N7/vAz9G+O39K6vJzqPZha1iOsuSHWK5QxBCArB03VbclxkOee/wxuv8rf0X7H3mUJs6Ms2ZYJVFCPjSYiCx7SwY+Nl0JTChMJgNJKkHj4nfVlE9p8hOUt4+LEMW0KrMuU401zLxN2unI1E1kZVaViZIkAsP9l8pRT39fcOnuXXQtm0BGSD96eHLy82+96qrM2+66a1p5K4a2XC1cDQ7CJHyfB+jkiUOvzD/y8N/kbr7llqv33nTTP36OveYXOXd97OhROj46pjNMHPawFXwEqEswg8CPkVlAUrBwiZUbgmI1gsS7D8isoh0oOzlDNEaUJHJspzBG8OSBT6CjmHUkM494MFARDAbYvGUrq/s76MZb3sr2fi8NcvwPE1NjzzkgU21jBtUMb2RRRMcMwgAM4kMbFYq9tHvPDdTT10/r162j+770JVltC1pokB1MxNcwA7KqqNQlmBA1b8NGw/UuqHXmzHCEWxAqIbphOjfV3r0nD6Y0C3fV4C+IVLFtz3fKdlwbdZySgQ0zUbHYHWCSyWWXX87+dfY7Y2fGP7V27Zri5Zs2/dH6vXu3T589+4Hjx4//Jl9w4ZwMkDCoOs1v95pB0puPH3hp9wMPPoikQplNwTBf6Dp45ROcx+bYWWNaGKd9FfLyGVvdm7Hz411aNfK4vl6rxyGyLH8YqBSAZNbZbcSYgEH8svKSNYiZSQA9j3Ca+PZ33EG3sr1fv20H6WyHJIecDTUFWR7oJOduVV2jzQSOBod+Pf10BTMB5veFnV30MEcIpzgrh8kgCL26eRvCw4Cdsxrn+OHQmrg7I9PYHQO4OYdOs7mFLZKqKqk4NBopMmGldotkWOAJkTumn1UQZnPfs0AlwSs8sJ3s3Q+x8I2MrAv6+wc4QJh55Ia37O26+pqrPrXq0p1/+Luf+Yxc9+zYiV18rauYeVNmv6UJWE6bm5y8+vToib97+qnv5/bvfzR6/PHHMy+9+CIDLmXNqlAVWBqQu++QzF02XhXDOXboHDKHsSQquwaxMjbWecXiWKGu3i7phurcOdTm8yBj3h1q82+74x20d99bqIQwya7Taxk4dc+uzsGvcfT3Uw61cZqBTLIGfs/T+79Fj37zAUZKv02vHDhAQ30DtIG1Qy8TAP4R5vUZu09SyqXJ4PpQ07KQtnKhssHrlUUChdgod9fOh4CQZ6UgxQgQMzzDv6VaTc+Uy2qhisU8G6KFhoaGoi1btlSvueYauv766zs2b77kiZ6NG66nC2ivmgF4ALNnR0e3/ulnPzt1y9tu/g8cq/8jACtPPfV9/dyzzyoww7M/fIZOcyyNgSyyWUAFL5w8qCzgAcPscUvZta/yJJNoUCzjBAWSQweSh7n1vX29tGH9err8yivo1rffRms2b6cMq+wClk4vTQsqqfJFWooJmhlgUaxuMQrHHi71jcma1amzdPTFF+ihh/6GnnrySTp25AjNWawAeHtPNx6g0SW1/os0gLc0jug7ZRfBFsfSrZekBPZFfsPA3WXxdxYYr+gdGIrWrNsQDI0M07at22j3rstoaHjo8J999rM/edmVV1Y54unYdsmukurvPEwX0F41A/iNB3NHafrsP33l8ImPcowaTvOgnB4bozMnjtIR9hUwzXvi7Bmp3gV652znLKN7kniy2sFl96RsmrUGwA94/kUe2NWM0q1nVb920yW0Zv1GBmfW0qZLNjMQ0i1hX4nTwZpT2lJMino73TpVqlOFDtRiH01Nu0iTqId3Lc3O0BHGBSZPHqPj/H7i2AmZe4/cwhl2FgHEoH8+Emh8riB2Nskua2ueoZA1q5TXTckXUt3FYg8DX72QcAbihpnpB+iViedpbOb4wctGbv69PXv26Guuvrpr67Ztr6ju7j+h19BeMwNouw79r/7Wb228dvuuAzt37cziQRDw7rvYw8CkjSNHjsqgIbSa5QwdpB1ZteOHDooUyFLudqHK0C6hngH8yiYE5gOw7vYdO2gzx7IDa9ZTpquHU6TmIQy5QEsyqlSLqAlBOScDtPrN7hE7hd6pxI0EhgkGw7K1g5150QpIoJ1iB/EAm4WDB16mE0ePMFo5EVdRG6ArznLE/7VdWBv5C2RI3dqEIX/HnECUv23evJk2bdxI6zaup68+9nn61ve/8uDnf+fJ26mN7TU/NMqFFG/ZdVVfkBWLxynKMpUQo+IHVsfrL91NG3Zc5vaX+Buh32DeFFzKs3gtvIoaVtByDsVBOrHnDhWr8m+VmeQp6hV8d19aiG6sWShNdH9SZfN+/vXcvnWDUgnAovneTiDcBaP0DtBqvFgl3862PN8whRdG5u25KA1vG/m3pfgoZu3AcjhF0pxanpRMOZDGjD2GUb3OBVozcgldM/P27OfpSWpna9tTw+Zr85wjyJkVxnQC5TqY0x+EwH6fqllJg9rXiVcu2T/7yR0XmPH3FmheXksTVVOrpJT5HKUytulLJBsaKHuDr+KgbXIl8cz4zP4R6gYLeRO/O2dSotukcMP1Sue43wUUmgYknkTDjY2FmMUJBtLYScfY5Hz36Uep3a1tDIBqpSDXSLB+52hJvoBsKtNIu0HM8QgqNIMHBH7dPqVtUwygqDSAs5x2LilPt8T2n/v0CD/jCN/ub+cVGGCbkuSXvVflnE97bkXJB6CU/LlWN6uQBRZWNlhCxkQMOmDou0xnpyep3a1tDCA4m/Vy3cCY8i7L777NtUbWEZX8AV3CNgsPRee2381q3W1r9bnVsRfStLvX+Djl7pLiEYgfsOUdlFg1iucMUoIEJoximEkW6I4QGrKflClQu1tbHxxpOtCsppXXObLED5YkdHNL6gLMuc5FqMUh3fKan3ZdzrHNGEKzj+GXlLuCWa3ThR/x6Dhfw46PgUls1ZGd05DBopCsCUzJWHvbj+zh0WnC6UV6Vjs/oQWBtW4dmrUCc85/7XPvs5x9fUCp1Tmcz2P39n733xP/wEP/kyPsw6NMQi19/na2tjNAK6TNb04TxC6RVaP+zN3lyu8Fq+1l7r9chmnlU/hWQSc7+2/J8fFBZFR9PCpOW1JiDtpPe2krzgC+hYz3ofTgSDGob6tbHNN8jeVsk3O0QALP1863T1zDmObhFtEDLRKG9O9JeXcUb7HvyqAFLh9gYyBqd2srA/hq1A2SfHdrPJtvZBdlS0ZMa3KrdMtxdjQ1+T6Aajp3a/Zo3h4DMp7ajs9FKZctPn+8JF6y1f5Gnj9iQkfn42irsuN8gne++Bz+dKXY63X9tsdbc2AeaGm3x8R/g5kAo+plK7lhjtWjqRyJVWHkNAG5KEknQIpe2t62un6rbSmi22tqT4R9/aP9G/W2u81ae2wjzzKghJj2J0WLgSXtEzA2EwkEHmeTvChByswi84BLTUs/++fVthVxAluZgNTv/n9PQprcREopjmVed1lefIvj4u261R7+Nr14sy/0ilJqpdm5jH9KQc1xlWSylI09jxnLiPQbTQP4K4o4qUNz2yKbLEmkLUH9XOgkP7nQrukar/k+l9p+XgaIlXa8vx9+untz07EW4RCqmWdchJNwhFsCQlmtaIA17wlRbWxt9wGaOV5aU3xsBkHZzpLxAdw5PMvsBoHoXARL+whL/b7E0ZQYYzvQSsUPtUqZDu0f436npqSRpqSOQXs2PtHwyX1RbAKNqLunqmRF3UsdmBxqQXEldUHU7rZiJsB+igmNlh5MbZc+dQOgY6g30RtLEN6GTe6Lb9cX7WqTOHGAlcoFuCu4azkHzG1vWg0lZuDE1sf99eoJkjKveFNsWZTnK8TMbrOG2B9PGnfOj2MS2UUTBdT+1r5cAL9yVpVJ+RYWmQzNevlNzE/O3VNOHzpFpx1tz2HHdXrwvZOmm3PEEm/Lom160ekW+fu+SlbN2sz8rjwGNQkcj4lahLTunmPm0tq7N2XPCU2GaeeYT5GR3+uYPBpiuZiAKnpREfdrbu01ATLqhpMbkWVb+4sZ/2SoHe7vHCLty/1ybLy3TyJ7boNKrqqT70I0rdIHURIBqNT3hHFiM+U5ZsrTAo4nXVjr2Dt1T06/eJLvJsVQ5JgfGcAc1euhPOgyCmtSDFoLURQaMjPkqN2tfcmgnJk2FobmIU6R92Bl11L22HMQ43n0RPFxzXF7K0cr/t50L+oc3+P1LxcRSMUMoxLFRJ4Wt2bGrvUhvGQYyi/2VrEQJKZDKb//lEi+3Y6p7kENTyXP0EKtTnk8YSSL9HIkzyrCcru4O/cA63a2NqaDa3jArdSygQFQ1xYXgnot9V25KeDmcXXK/h7ExJb/8tkR3S/nTpC3RUo8dUzyOcUKnjZIT8lykp0oCacNtIA1wizONMh5TSLYpEKV1RbGD3CLXMhDyGzVr8MNXJpbxqSCxR9yMukjiuZYE7AzqFA6V6JK1ZSZ4TlM7W7tdQJt+Cfr/trZQmiukzEJVDr9EYZBPFM4hbTZf5p8jUDkogflEaGV0YinocvFAvLsjd0YL+TiXD6zkoedwi7ksk/4lho+KVnDIjEd9t4MQCMPmI1DNpJ9XTFpxk4hlXJ4u1hUECS9dwXrQWaBcpk65TozNDk1Tbmwg3KFHBWwhEzQJfvNzy1Qu1vbGIAHiccuCLCAQb1uFpuSaWS2La0JzNr2Gbv4UoJ86cUmQCfOoh9uuv3987rpVklhppt1o2Kv2zGCIbS5F3lotswmMg9grLvHtlFdSrUxYgPQEwAAASVJREFU+RWSSjFAk5GybvIAGwnjYrOFeZQZKfDwn7ugvb7gHsLMPKlMiar1EpuBKarqLBO/QJkOTPXqkhK6cmmh7YFA2xjg7JlRhcp+mADUrKPz+aYVqZZiAvfACb+1AnukntCWkC+nmfUToDmM9KuU5LvPyu5r6vCxf61WkVlHYAA8v7Cz0ClOHx7EWK1gYejVljEjKVvPyrwHM9lD5vEY+lO1UZWHWTrLYHjPAd6JLwF/uadrhj9M0lypQhs3b6WZuSq9cniKKo0adfcWqTJfoZFVG5jznqV2trYxQFSpHHr4h/fSxbai7QZqc2sLA2hTGj79kx/aTRfbG6sputje1G0l0MWL7Q3ULjLAm7xdZIA3ebvIAG/ydpEB3uTtIgO8ydv/AwAA//9+nA1kAAAABklEQVQDADVv0QMzNkoEAAAAAElFTkSuQmCC&quot; alt=&quot;img&quot;&gt;User-Agent Switcher for Chrome&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAFg0lEQVR4nOxaWUicVxS+M44a9z0k7pqIYm3V1iUu6KgNSh7EKPpQKMZKFaVQMW2pNdCmDbXQVAwEKZpUKVUfBLUixYKgrajV1DgiPljjQ3ArcRv33cl3Bn6Z+R3HcWbIODAfDNx77u+959x77rlnUciMHEJ1g6mpqdc9PDweODs7P7OxsdkCSfYmfrSWo6PjM39//x/EYvF1dTwKVBELCgqudnZ2/jg/P//B/v6+gBkQ5ubmMhcXl1/T09PLampq5vnjJ5iLjo6+MT4+3rqxsXGFXSDY2tr+Hxoaeruvr+8fRbqSAHFxcTdGRka6t7a2LrELCGtr653w8PAkRSGO7wCpzejoaOtFZZ5AvBGPxCtHM+MaCwsLP+MXyy449vb2bMHnldXV1Rbqy0+AbjpdWGYkIF7JQlJbfgJCofCLpaWleGYkODo6Eshksu2VlZUuERGkUmkKMzJwPMsF2N3dfYsZGTieOTMqY8YJgZAZOUwCGBomAQwNkwCGhkkAQ8MkgKFhEsDQEGn6ob29/SuBQPAXgp8puLI7SHdcRlARsbm5+d7h4aEZ0wIikegQ2YZhBCiDmHeJSJjzGn7itbW1qxrNcdYHTk5OzwMDA+9XVFT8kZSUdMAfz8zM9BkYGPh0cXHxE+SQzJkGsLCw2Hdzc3ucmJj4qLGx8SV/vLu7W1RcXCyem5v7FrFvjLq5To0HzMzMmJ+f3/3a2toHqhjnIzY2Ngwpmebt7W21mTQrK6sXSI1k9/f3S9gZwEmIgoKCvpycnPwGp6TqlAUqBYCqsKioqM8GBwd/YudAdna2R0dHR89pQhDzKSkpYnwzy84BHx+fj6anp59CCP6QagE8PT1/mZmZyWdaABmOMOzuENIfSuqEO7MfGRkZpcnOq4K7u3s1VKqIRz4ZkWGXpBEREXeZlujp6ZGQfvPprq6uj7VlnpCTk/MVLryUTz8hALLCdW1tbVKmA+hykoXh+rhPhzExMY+YDqiqqpKCt1o+/YQA2KlmpiPIspB55PpIlw+3tLS8ZDrC29u7lU9TEgC7JsvLy9P6mBVBtp1rwyj8y/SAkpISCUyw0n1VEgC7LystLd1m+sES18D78IrpAbgH21DHRUWakgA7OztMjzh+JC0tLfWW8YY1s1fsKwmAdJ0QJ+DF9ACoYyDXhjpdY3pAeXm51/r6uqUiTS4ALtmx2rS3tycwHUGuAN6B42QxBEgkGtMRDQ0N8Xid5W2OZ7kAOOJx7iOcwh18pFNdrKioKAUlqmNnDLt2uays7BbTEXDw7nBtjme5AHi8/uQGlpeX34cdT2JagnYa+fvv+PSJiYmvdTmFhISEZKTTb3J9nICcZ7kAISEh9VQNpDb5GxKJ5AlcAkemBQoLC+/Bg4zk07H4u/n5+feYFkBJyZV44jSDeA0ODq6nttzDm5qaWob/E4CF36E+/H0nLJiYm5v7+/Dw8JamC8EjvTs2NvY9p6d8QAXEcBI3ZmdnB5iGoI3s6urqwN++zdHgqtSjVlZH7WMrlJaW9jmVMrk++eFNTU1DYCr5rDuRkZHh6OXl9RRxwUMEN6d+R2NDQ0MPfX196+lv1M1Ja5LaPAcUYwLiMTk5uYzrn1lmRaTEUGjusbOzewIh/66urp4memVlpVVdXV0Y9P02orKP4UKfS+VwCaXOzs51Dg4OzVARCfeAkhlvbm6Ox5uUh7LXTUUXWlWZ9cTOkhBUyjyt0I0Fj/Aa7uJILx0cHOilik8uDELWHZyQJXZbZZx+WqH7RJSDwGEmKyvrN5QyXWDLw6igpjiO+yHAbpvz6bqA5qI5aW7+GF1Y0nkwn9nb2/sff1wtE1TKxGl8CEFuUU0KqmLF3gDokSI7T+Y9ICCgHjHGi9O+Neg/cugDrwEAAP//w1ZOPAAAAAZJREFUAwBM65IrLdyicgAAAABJRU5ErkJggg==&quot; alt=&quot;img&quot;&gt;篡改猴&lt;/p&gt;
&lt;h2 id=&quot;其中篡改猴需要额外设置&quot;&gt;其中篡改猴需要额外设置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#其中篡改猴需要额外设置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/image-20260716214943403.webp&quot; alt=&quot;image-20260716214943403&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/image-20260716215015649.webp&quot; alt=&quot;image-20260716215015649&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后去&lt;a href=&quot;https://greasyfork.org/zh-CN/scripts?page=1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;greasyfork&lt;/a&gt;  找你需要的插件下载即可,这里什么类型的脚本都有&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/image-20260716215156014.webp&quot; alt=&quot;image-20260716215156014&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后可以管理已下载插件	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E6%B5%8F%E8%A7%88%E5%99%A8%E6%8F%92%E4%BB%B6%E6%8E%A8%E8%8D%90/image-20260716230102488.webp&quot; alt=&quot;image-20260716230102488&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;当然还有数不胜数的插件,不过适合自己的才是最好的&lt;/p&gt;</content:encoded><category>软件推荐</category><category>Chrome</category></item><item><title>使用VScode配置C和CPP环境</title><link>https://huyangpahuo.vercel.app/posts/shi-yong-vscode-pei-zhi-c-he-cpp-huan-jing/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shi-yong-vscode-pei-zhi-c-he-cpp-huan-jing/</guid><description>本篇讲解如何使用vscode配置c和c++环境</description><pubDate>Wed, 15 Jul 2026 14:06:02 GMT</pubDate><content:encoded>&lt;h1 id=&quot;关于vs和clion破电脑带不动所以用vscode配置环境&quot;&gt;关于VS和Clion破电脑带不动,所以用VScode配置环境&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关于vs和clion破电脑带不动所以用vscode配置环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这个记录一下吧,防止以后换电脑不知道咋配了&lt;/p&gt;
&lt;p&gt;这是微软官方的教程,不过写的也太草率了点&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com/docs/languages/cpp&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://code.visualstudio.com/docs/languages/cpp&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;下载vscode插件&quot;&gt;下载VScode插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载vscode插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;把这个包装进去,当然你也可以装第一个的Code runner&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715142356607.webp&quot; alt=&quot;image-20260715142356607&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;下载mingw64&quot;&gt;下载MinGW64&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载mingw64&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/msys2/msys2-installer/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715141839349.webp&quot; alt=&quot;image-20260715141839349&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;双击启动然后指定MinGW64的安装路径之后无脑下一步&lt;/p&gt;
&lt;p&gt;然后安装完成弹出来一个小黑框&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715142121370.webp&quot; alt=&quot;image-20260715142121370&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;输入代码并回车来安装工具链(最好挂梯子,防止下载失败)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后先回车默认安装所有的东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715142526585.webp&quot; alt=&quot;image-20260715142526585&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后当提醒是否继续时回车或者输入 &lt;strong&gt;y&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715142630365.webp&quot; alt=&quot;image-20260715142630365&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后稍等片刻就下载完了&lt;/p&gt;
&lt;p&gt;然后把ucrt64加入到系统path路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715142934778.webp&quot; alt=&quot;image-20260715142934778&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715143144886.webp&quot; alt=&quot;image-20260715143144886&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;先找到&lt;strong&gt;ucrt64&lt;/strong&gt;的&lt;strong&gt;bin&lt;/strong&gt;文件位置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715143336454.webp&quot; alt=&quot;image-20260715143336454&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715143405980.webp&quot; alt=&quot;image-20260715143405980&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后添加到Path&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715143219488.webp&quot; alt=&quot;image-20260715143219488&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后输入这几个命令检测一下&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;东西&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;gcc&lt;/td&gt;&lt;td&gt;C编译器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;g++&lt;/td&gt;&lt;td&gt;C++编译器&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;gdb&lt;/td&gt;&lt;td&gt;调试器&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;gcc --version   
g++ --version
gdb --version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715172036878.webp&quot; alt=&quot;image-20260715172036878&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;coderunner插件下的使用方式最简单&quot;&gt;①Coderunner插件下的使用方式(最简单)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#coderunner插件下的使用方式最简单&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们测试一下C语言,可以&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715144625919.webp&quot; alt=&quot;image-20260715144625919&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;C++也可以&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715145013103.webp&quot; alt=&quot;image-20260715145013103&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对了,说起来,好像在liunx里是自带gcc g++这些东西,直接使用&lt;code&gt;gcc 文件名.c -o 文件名&lt;/code&gt;  &lt;code&gt;g++ 文件名.cpp -o 文件名&lt;/code&gt;这种就可以编译运行c和c++程序&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不过这个是单个文件的,我们要实现运行整个项目的文件需要这样改&lt;/p&gt;
&lt;p&gt;首先打开这个配置文件Setting.json,找到这里&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715154440256.webp&quot; alt=&quot;image-20260715154440256&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;将其分别改为(即&lt;code&gt;$fileName &lt;/code&gt;改成&lt;code&gt;*.c &lt;/code&gt;或&lt;code&gt;*.cpp &lt;/code&gt; 然后&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;‘&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;`dir&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6944em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;‘&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0278em;&quot;&gt;r&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;fileNameWithoutExt &lt;code&gt;改成&lt;/code&gt;.\ $fileNameWithoutExt.exe`)&lt;/p&gt;
&lt;p&gt;因为原版是对单个文件编译运行的,这里改成多个关联文件运行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//原版本&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;c&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; gcc $fileName -o $fileNameWithoutExt &amp;#x26;&amp;#x26; $dir$fileNameWithoutExt&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//修改后&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;c&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; gcc *.c -o $fileNameWithoutExt &amp;#x26;&amp;#x26; .\\$fileNameWithoutExt.exe&quot;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//固定名字版本(推荐)&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;c&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; gcc *.c -o program.exe &amp;#x26;&amp;#x26; .\\program.exe&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//原版本&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;cpp&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; g++ $fileName -o $fileNameWithoutExt &amp;#x26;&amp;#x26; $dir$fileNameWithoutExt&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//修改后&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;cpp&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; g++ *.cpp -o $fileNameWithoutExt &amp;#x26;&amp;#x26; .\\$fileNameWithoutExt.exe&quot;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//固定名字版本(推荐)&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;cpp&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cd $dir &amp;#x26;&amp;#x26; g++ *.cpp -o program.exe &amp;#x26;&amp;#x26; .\\program.exe&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们分别测试一下&lt;/p&gt;
&lt;p&gt;C++多文件程序&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715160441538.webp&quot; alt=&quot;image-20260715160441538&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;C语言多文件程序&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715160717229.webp&quot; alt=&quot;image-20260715160717229&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;接下来我要说的就是这个插件的缺点&lt;/p&gt;
&lt;p&gt;我们刚才配置的是“.\$fileNameWithoutExt.exe”意思是根据当前文件名配置exe,但是就会导致在不同的文件上运行时,诞生出来了不同名字的exe,尽管结果一样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715160923840.webp&quot; alt=&quot;image-20260715160923840&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;解决办法就是把&lt;code&gt;$fileNameWithoutExt.exe&lt;/code&gt;改成一个具体的名字例如&lt;code&gt;program.exe&lt;/code&gt;,这样就不会有这种问题了&lt;/p&gt;
&lt;p&gt;最大的缺点就是我们对项目参与的脚本是否全部有用无从得知,一旦混进去无用脚本很难找出来&lt;/p&gt;
&lt;h2 id=&quot;-cc-extension-pack常用&quot;&gt;② C/C++ Extension Pack(常用)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-cc-extension-pack常用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;注意,下载这个插件包之后千万千万千万不要再下载这个clangd插件,因为会和微软的产生冲突,导致右上角的三角形调试按钮消失(浪费一个下午才找出来原因,我还以为是VScode坏了,气死我了,为什么我一开始没想到是插件冲突的问题,真是的),不过clangd确实在智能补全上比微软的要好,不过目前我们先用微软的,这两个是二者不可得兼的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715201713388.webp&quot; alt=&quot;image-20260715201713388&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;其他大佬的配置方法例如&lt;a href=&quot;https://blog.csdn.net/qq_42417071/article/details/137438374&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;CSDN上的&lt;/font&gt;&lt;/a&gt;  和 &lt;a href=&quot;https://zhuanlan.zhihu.com/p/87864677&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;知乎上的&lt;/font&gt;&lt;/a&gt;  方法是task.json文件+ launch.json什么的&lt;/p&gt;
&lt;p&gt;原理和Coderunner差不多,这里我还是实践一下吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;输入C/C++，选择“Edit Configurations(UI)”
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以打开配置面板&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715202407927.webp&quot; alt=&quot;image-20260715202407927&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然也可以从这里打开&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715202540154.webp&quot; alt=&quot;image-20260715202540154&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715202633737.webp&quot; alt=&quot;image-20260715202633737&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们设置为gcc.exe (C语言编译器)或者g++.exe(C++编译器)&lt;/p&gt;
&lt;p&gt;下面的Windows-gcc-64不要改保持默认&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715202900519.webp&quot; alt=&quot;image-20260715202900519&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后设置完毕可以看到在.vscode文件夹多了一个c_cpp_properties.json文件&lt;/p&gt;
&lt;p&gt;可以看到我们当前使用的是C语言编译器gcc.exe&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715203207561.webp&quot; alt=&quot;image-20260715203207561&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时我们就可以点击这个编译运行了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715203500207.webp&quot; alt=&quot;image-20260715203500207&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们重新创建一个新的C语言文件,然后点击调试运行后,在.vscode文件夹中出现了tasks.json文件以及exe文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715203849865.webp&quot; alt=&quot;image-20260715203849865&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们试一下scanf输入输出有没有问题&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715204658635.webp&quot; alt=&quot;image-20260715204658635&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对了这里提一嘴&lt;/p&gt;
&lt;p&gt;我们在visual studio里的C项目使用scanf的时候需要在这里加一句,不然会报错,详细过程参考&lt;a href=&quot;https://blog.csdn.net/m0_62391199/article/details/122586539&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;大佬文章&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;步骤：项目 -&gt; 属性 -&gt; C/C++ -&gt; 预处理器 -&gt; 预处理定义 -&gt; 编辑 -&gt; 加“_CRT_SECURE_NO_WARNINGS 1”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;而在&lt;a href=&quot;https://www.dev-cpp.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Dev C++&lt;/a&gt;和&lt;a href=&quot;http://royqh.net/redpandacpp/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;小熊猫C++&lt;/a&gt;这种轻量C/C++编译器里分别需要在编译的时候加上这一句,这样控制台输出的中文就不会是乱码了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;finput&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;UTF&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;fexec&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;GBK      &lt;span class=&quot;token comment&quot;&gt;//小熊猫C++&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;finput&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;UTF&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;fexec&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;charset&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;UTF&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;//Dev C++&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715205411441.webp&quot; alt=&quot;image-20260715205411441&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK回归正题&lt;/p&gt;
&lt;p&gt;当然这只是单个文件的,我们如果要多个文件运行的话需要对tasks.json做一些调整&lt;/p&gt;
&lt;p&gt;如图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715210926072.webp&quot; alt=&quot;image-20260715210926072&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们先将其改为这样试试看&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-fdiagnostics-color=always&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-g&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// &quot;${file}&quot;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;*.c&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-o&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// &quot;${fileDirname}\\${fileBasenameNoExtension}.exe&quot;&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;${fileDirname}\\program.exe&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715211236631.webp&quot; alt=&quot;image-20260715211236631&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后保存后,我们创建launch.json文件,使用gdb调试&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715211449502.webp&quot; alt=&quot;image-20260715211449502&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;ok,我们获得了这个launch.json文件,此时我们需要&lt;strong&gt;添加配置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715211727757.webp&quot; alt=&quot;image-20260715211727757&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择这个&lt;code&gt;C/C++: (gdb) 启动&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715211848215.webp&quot; alt=&quot;image-20260715211848215&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们需要修改的只有两个地方&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715212158612.webp&quot; alt=&quot;image-20260715212158612&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第一个是项目名称,我们和之前的&lt;code&gt;${fileDirname}\\program.exe&lt;/code&gt;保持一致,第二个是gdb调试器的路径,这个我们需要改为我们实际的路径&lt;/p&gt;
&lt;p&gt;比如我的是在这里&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;program&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;${fileDirname}\\program.exe&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715212456077.webp&quot; alt=&quot;image-20260715212456077&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715212632109.webp&quot; alt=&quot;image-20260715212632109&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;很好,接下来我们验证一下,使用多文件项目测试,但是出现了这个问题&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715213536396.webp&quot; alt=&quot;image-20260715213536396&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;原因是我们task.json之前用的这个&lt;code&gt;*.c &lt;/code&gt;,VScode官方提到过多文件通配符需要显式列文件或者使用构建系统,也就是&lt;code&gt;*.c&lt;/code&gt;  或者&lt;code&gt;* .cpp&lt;/code&gt;在这个新版本插件里不适用(旧版可能适用)&lt;/p&gt;
&lt;p&gt;所以我们还是一个一个的把文件添加上去吧,然后把cwd修改成&quot;cwd&quot;: &quot;${fileDirname}&quot;  即当前工作目录 = 当前打开文件所在目录&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;options&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// &quot;cwd&quot;: &quot;D:/MinGW-W64/ucrt64/bin&quot;&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;cwd&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;${fileDirname}&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715221618221.webp&quot; alt=&quot;image-20260715221618221&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;ok,调试成功&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715221748037.webp&quot; alt=&quot;image-20260715221748037&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;想必你也发现了-----我们光配置这个环境就浪费了这么多时间,而且可复用性低,而且难以管理文件,每次新开一个项目还都需要我们手动修改配置文件&lt;/p&gt;
&lt;p&gt;所以我们接下来要讲的方法是Cmake + clang&lt;/p&gt;
&lt;h2 id=&quot;-cmake-tools-推荐&quot;&gt;③ CMake Tools (推荐)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-cmake-tools-推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;对了,你肯定会注意到CMake Tools下方的CMake插件的存在,emmm,这个是因为以前CMake Tools以前是依赖这个东西的语言服务的,而现在更新了不需要了,可下可不下&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们之前提到的的那个 clangd插件,这里是需要的,这里我们不再依赖gcc,而是使用clang,clang的编译速度大于gcc,而且报错的时候的提示更现代&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715232923663.webp&quot; alt=&quot;image-20260715232923663&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们先在vscode的设置文件settings.json里把微软的这个智能补全由“default”设置为“disabled”,如果有一天你想要换回方案二就将其设置为default然后禁用 clangd插件&lt;/p&gt;
&lt;p&gt;既然你决定使用Clangd插件,那么我们一不做二不休,把Clang也下载了,clang和gcc一样可以运行c或者c++程序&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/llvm/llvm-project/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载Clang&lt;/font&gt;&lt;/a&gt;  我们下载后把llvm的bin文件夹添加到系统path路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715223221230.webp&quot; alt=&quot;image-20260715223221230&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个就是VScode官方推荐的方式,CMake 不是编译器，而是&lt;strong&gt;构建系统生成器&lt;/strong&gt;,任何大型cpp和c项目离不开Cmake&lt;/p&gt;
&lt;p&gt;比如我们熟悉的flutter也是用Cmake构建和打包项目的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260717124054554.webp&quot; alt=&quot;image-20260717124054554&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们先下载cmake  &lt;a href=&quot;https://cmake.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;  提一嘴,cmake最新版本支持安卓了!&lt;/p&gt;
&lt;p&gt;下载完记得把bin文件配置到path路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715224958113.webp&quot; alt=&quot;image-20260715224958113&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后这个东西有GUI界面的(不知道什么用,你们可以研究一下)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260715224832563.webp&quot; alt=&quot;image-20260715224832563&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们去下载Ninja  &lt;a href=&quot;https://github.com/ninja-build/ninja/releases/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;把这个ninja exe放到Cmake的bin文件夹就行了(主要是ninja只有一个exe,图方便,你们要是介意也可以放到其他地方然后把它的路径加到系统path里面去),ninja是一个现代的快速构造工具&lt;/p&gt;
&lt;p&gt;OK我们验证一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716001503449.webp&quot; alt=&quot;image-20260716001503449&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;很好,接下来要开始了&lt;/p&gt;
&lt;p&gt;先按&lt;code&gt;Ctrl + Shift + P&lt;/code&gt; 输入&lt;code&gt;CMake: Quick Start&lt;/code&gt;并选择&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716002115469.webp&quot; alt=&quot;image-20260716002115469&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后第一步给Cmake项目命名,这里你可以保持默认&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716002811629.webp&quot; alt=&quot;image-20260716002811629&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后选择项目的语言,我们就用C++吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716003103522.webp&quot; alt=&quot;image-20260716003103522&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后问创建可执行文件Executable还是创建库Library,这里我们创建可执行文件Executable,毕竟我们要试验一下能不能用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716003230762.webp&quot; alt=&quot;image-20260716003230762&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就是测试工具Ctest和打包工具Cpack,可选可不选,这里我先都勾选上&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716003307680.webp&quot; alt=&quot;image-20260716003307680&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们得到了这三个东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716004325768.webp&quot; alt=&quot;image-20260716004325768&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们 Ctrl + Shift + P 指定工具包&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;CMake: Select Kit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716004841592.webp&quot; alt=&quot;image-20260716004841592&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们选择Clang 如果你安装了但是没有显示,可以先扫描一下退出重进就可以看到有了(虽然你也可以用gcc,但我不推荐,因为还要多配置)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716004942050.webp&quot; alt=&quot;image-20260716004942050&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	然后选择之后就可以了,于是我们现代化标准的C++环境已经搭建完成&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716005145524.webp&quot; alt=&quot;image-20260716005145524&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们开始build,build有两种方式,第一种就是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Cmake: Build 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716005510515.webp&quot; alt=&quot;image-20260716005510515&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第二种就是点击下方的这个齿轮bulid(生成)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716005638597.webp&quot; alt=&quot;image-20260716005638597&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后得到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716005712878.webp&quot; alt=&quot;image-20260716005712878&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;最后我们终于可以运行项目了!&lt;/p&gt;
&lt;p&gt;使用快捷键 &lt;strong&gt;ctrl + shift +F5&lt;/strong&gt; 运行项目得到&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;CMake: Run Without Debugging
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716005814656.webp&quot; alt=&quot;image-20260716005814656&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716010130413.webp&quot; alt=&quot;image-20260716010130413&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果我们要调试的话可以按&lt;strong&gt;shift + F5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716010315618.webp&quot; alt=&quot;image-20260716010315618&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们测试多文件项目,把cpp文件添加到cmakelists的add_executable里面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716011004394.webp&quot; alt=&quot;image-20260716011004394&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个可以让AI给你写几个&lt;/p&gt;
&lt;p&gt;然后由于cmakelists发生了变动我们需要重新构建&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;CMake: Configure
CMake: Build   或者 点击vscode下方的齿轮
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后Ctrl + shift +F5或者点击VScode下方的小虫子旁边的小三角运行,调试就是小虫子&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716013803992.webp&quot; alt=&quot;image-20260716013803992&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;成功得到结果&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VScode%E9%85%8D%E7%BD%AEC%E5%92%8CCPP%E7%8E%AF%E5%A2%83/image-20260716011045416.webp&quot; alt=&quot;image-20260716011045416&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;cmake&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-cmake&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 指定 CMake 最低版本要求&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 意思：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 如果用户电脑上的 CMake 版本低于 3.10，则停止配置&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;cmake_minimum_required&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token property&quot;&gt;VERSION&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;# 定义项目&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 参数：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VScodeScriptTest  -&gt; 项目名称&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VERSION 0.1.0     -&gt; 项目版本&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# LANGUAGES C CXX   -&gt; 项目使用的语言&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# C   = C语言&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# CXX = C++&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 如果不写 LANGUAGES，默认会启用 C 和 C++&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;project&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    VScodeScriptTest
    &lt;span class=&quot;token property&quot;&gt;VERSION&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.1.0&lt;/span&gt;
    LANGUAGES C CXX
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;# 创建一个可执行程序&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 参数：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 第一个参数：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VScodeScriptTest&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# &lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 是生成的目标(target)名字&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 后面的：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# main.cpp&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Player.cpp&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Enemy.cpp&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 是参与编译的源文件&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 最终生成：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Windows:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VScodeScriptTest.exe&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;add_executable&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    VScodeScriptTest

    main.cpp

    Player.cpp
    Enemy.cpp
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;# 引入CTest模块&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# CTest是CMake自带的测试系统&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 作用：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 管理单元测试&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CTest&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;# 开启测试功能&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 开启后：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 可以使用:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# ctest&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 来执行测试&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;enable_testing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;



&lt;span class=&quot;token comment&quot;&gt;# 设置CPack打包项目名称&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# ${PROJECT_NAME}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 是变量&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 它的值就是：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VScodeScriptTest&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    CPACK_PROJECT_NAME 
    &lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;PROJECT_NAME&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;



&lt;span class=&quot;token comment&quot;&gt;# 设置打包版本&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# ${PROJECT_VERSION}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 来自：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# project(&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# VERSION 0.1.0&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# )&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;CPACK_PROJECT_VERSION&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;PROJECT_VERSION&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;



&lt;span class=&quot;token comment&quot;&gt;# 引入CPack&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# CPack负责生成安装包&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 例如：&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Windows:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# .exe安装程序&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Linux:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# .deb&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# macOS:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# .dmg&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;#&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;include&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CPack&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;最后&quot;&gt;最后&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#最后&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C++我最近看到一个很好看的GUI库&lt;a href=&quot;https://github.com/sudoevolve/EUI-NEO&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;,也是基于Cmake的,就是不太成熟而且并不像其宣传的那样内存占用低,不过其实还有更成熟的库比如&lt;a href=&quot;https://github.com/ocornut/imgui&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;imgui&lt;/a&gt;这种&lt;/p&gt;</content:encoded><category>电脑日常</category><category>VScode</category><category>C</category><category>C++</category></item><item><title>DiskGenius使用</title><link>https://huyangpahuo.vercel.app/posts/diskgenius-shi-yong/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/diskgenius-shi-yong/</guid><description>本篇记载我用DiskGenius把D盘分一部分给C盘的过程</description><pubDate>Wed, 15 Jul 2026 12:05:10 GMT</pubDate><content:encoded>&lt;h1 id=&quot;最近c盘不够用了于是用diskgenius给把d盘的空间分c盘一点&quot;&gt;最近C盘不够用了,于是用DiskGenius给把D盘的空间分C盘一点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#最近c盘不够用了于是用diskgenius给把d盘的空间分c盘一点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://www.diskgenius.cn/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击下载软件&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先右键点击要分出去的盘,选择调整分区大小&lt;/p&gt;
&lt;p&gt;不过提前提醒一下,C盘和D盘必须为相同类型的盘,比如都是固态硬盘或机械硬盘,否则无法互通&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/DiskGenius%E4%BD%BF%E7%94%A8/image-20260715121259233.webp&quot; alt=&quot;image-20260715121259233&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后查看我们磁盘的位置,可以看到C盘位于D盘的左边&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/DiskGenius%E4%BD%BF%E7%94%A8/image-20260715131832265.webp&quot; alt=&quot;image-20260715131832265&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;那么我们就在&lt;strong&gt;分区前部的空间&lt;/strong&gt;输入例如&lt;code&gt;30GB&lt;/code&gt; ,提醒一下,确保D盘有充足的空余空间,否组分配多的话会造成D盘磁盘数据损毁&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这个如果要分配的磁盘位于D盘的右边就选择&lt;code&gt;分区后部的空间&lt;/code&gt;,目的是让分出的空间离目标盘相邻&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后选择&lt;strong&gt;合并到Windows(C:)&lt;/strong&gt;,选择完成后&lt;strong&gt;关机&lt;/strong&gt;或者&lt;strong&gt;重启&lt;/strong&gt;,然后点击&lt;strong&gt;开始&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/DiskGenius%E4%BD%BF%E7%94%A8/image-20260715132043028.webp&quot; alt=&quot;image-20260715132043028&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就会弹出来一个提醒的弹窗问你是否确认开始分区,点击&lt;strong&gt;是&lt;/strong&gt;然后就不要再操作电脑了,接下来是全自动操作了&lt;/p&gt;
&lt;p&gt;最终C盘就会得到30GB,而D盘则会减少30GB&lt;/p&gt;</content:encoded><category>软件推荐</category><category>DiskGenius</category></item><item><title>解决jetbrains的Rider等软件打开慢的问题</title><link>https://huyangpahuo.vercel.app/posts/jie-jue-jetbrains-de-rider-deng-ruan-jian-da-kai-man-de-wen-ti/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/jie-jue-jetbrains-de-rider-deng-ruan-jian-da-kai-man-de-wen-ti/</guid><description>关于Jetbrains的rider和idea软件卡顿解决方案</description><pubDate>Wed, 15 Jul 2026 12:05:10 GMT</pubDate><content:encoded>&lt;h1 id=&quot;众所周知jetbrains家的编辑器全都是内存怪兽&quot;&gt;众所周知Jetbrains家的编辑器全都是内存怪兽&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#众所周知jetbrains家的编辑器全都是内存怪兽&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;比如IDEA Rider pycharm这些东西,对普通电脑十分不友好,容易编译一半软件就崩溃&lt;/p&gt;
&lt;p&gt;尤其是unity , 当rider加载unity项目时都要好几分钟,C#脚本编译速度就更别提了&lt;/p&gt;
&lt;p&gt;之前在网上看到一个大佬给出了方法就是调整GC上限什么的&lt;/p&gt;
&lt;p&gt;就是在rider下载文件夹里找到这个文件,用记事本打开&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E8%A7%A3%E5%86%B3jetbrains%E7%9A%84Rider%E7%AD%89%E8%BD%AF%E4%BB%B6%E6%89%93%E5%BC%80%E6%85%A2%E7%9A%84%E9%97%AE%E9%A2%98/image-20260715134545058.webp&quot; alt=&quot;image-20260715134545058&quot; style=&quot;zoom: 80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后调整堆内存上限为4096m 下限为1024m  m代表MB&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;-Xms1024m
-Xmx4096m
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;并调整代码缓存大小,这个一般情况下调的越大越好&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;-XX:ReservedCodeCacheSize=960m
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后增加一句字符串共用什么的来节省内存(可加可不加)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;-XX:+UseStringDeduplication
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E8%A7%A3%E5%86%B3jetbrains%E7%9A%84Rider%E7%AD%89%E8%BD%AF%E4%BB%B6%E6%89%93%E5%BC%80%E6%85%A2%E7%9A%84%E9%97%AE%E9%A2%98/image-20260715134654936.webp&quot; alt=&quot;image-20260715134654936&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后保存重启,就会发现rider流畅了很多,以前滚动界面上的代码都一卡一卡的&lt;/p&gt;
&lt;p&gt;不过我还是喜欢用VScode这种,就是配置麻烦了点&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Jetbrains</category></item><item><title>unity和godot的反编译工具</title><link>https://huyangpahuo.vercel.app/posts/unity-he-godot-de-fan-bian-yi-gong-ju/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unity-he-godot-de-fan-bian-yi-gong-ju/</guid><description>本篇介绍unity godot 和love2d游戏如何反编译出文件资源</description><pubDate>Sun, 12 Jul 2026 20:40:40 GMT</pubDate><content:encoded>&lt;h1 id=&quot;反编译又俗称解包&quot;&gt;反编译,又俗称解包&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#反编译又俗称解包&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;unity反编译软件assetripper&quot;&gt;Unity反编译软件AssetRipper&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#unity反编译软件assetripper&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/AssetRipper/AssetRipper&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;使用方法是本地服务器作为后台,浏览器作为操作界面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/unity%E5%92%8Cgodot%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/image-20260712214849497.webp&quot; alt=&quot;image-20260712214849497&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/unity%E5%92%8Cgodot%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/image-20260712215018407.webp&quot; alt=&quot;image-20260712215018407&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后此时你可以看到后台开始工作,输出一大堆日志,这个反编译是根据游戏包的体积来定的,如果游戏不到两个G,不到3分钟就反编译成功,如果游戏大于6个G,大约需要二三十分钟&lt;/p&gt;
&lt;p&gt;如果完成这个“No Files Loaded”会变成绿色按钮,点击会进入一个新的界面,,然后勾选“导出为unity项目”并选择保存文件夹&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/unity%E5%92%8Cgodot%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/image-20260712215253488.webp&quot; alt=&quot;image-20260712215253488&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时会得到这两个文件夹&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/unity%E5%92%8Cgodot%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/image-20260712215600578.webp&quot; alt=&quot;image-20260712215600578&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是无法作为项目运行,只能获得代码和资源&lt;/p&gt;
&lt;h2 id=&quot;godot反编译软件gdsdecomp&quot;&gt;Godot反编译软件gdsdecomp&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#godot反编译软件gdsdecomp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/GDRETools/gdsdecomp&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个由于godot是开源的软件,所以所有的东西都是公开的,反编译一定就是100%反编译,不像unity是黑盒&lt;/p&gt;
&lt;p&gt;不信的话你们可以把杀戮尖塔 土豆兄弟反编译试一下,就会发现反编译出来的项目居然可以编译运行&lt;/p&gt;
&lt;p&gt;然后就是使用方式也很简单,直接把这个godot游戏的exe拖进去&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/unity%E5%92%8Cgodot%E7%9A%84%E5%8F%8D%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7/image-20260712220759172.webp&quot; alt=&quot;image-20260712220759172&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后反编译成功后选择文件夹导出即可&lt;/p&gt;
&lt;h2 id=&quot;love2d的反编译&quot;&gt;Love2d的反编译&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#love2d的反编译&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;最经典的就是小丑牌,emmm这个其实无需反编译,因为直接右键小丑牌exe文件然后用7zip解压此文件就行了,然后就得到所有的文件了&lt;/p&gt;
&lt;p&gt;事实上love2d打包游戏的方式本质上就是zip rar而且love2d甚至都不是引擎只是一个框架&lt;/p&gt;</content:encoded><category>软件推荐</category><category>Reverse</category></item><item><title>Unity的MCP配置</title><link>https://huyangpahuo.vercel.app/posts/unity-de-mcp-pei-zhi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unity-de-mcp-pei-zhi/</guid><description>本篇是关于unity中mcp的配置</description><pubDate>Mon, 15 Jun 2026 10:44:44 GMT</pubDate><content:encoded>&lt;h1 id=&quot;ai目前已经开始进入游戏制作业了&quot;&gt;AI目前已经开始进入游戏制作业了&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ai目前已经开始进入游戏制作业了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;插个眼,因为这是我第一次用这么nb的东西,我以前认为这玩意只会让项目混乱,现在看来是我错了&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615104703320.webp&quot; alt=&quot;image-20260615104703320&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;首先在unity中通过git链接添加包&quot;&gt;首先在unity中通过git链接添加包&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先在unity中通过git链接添加包&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://github.com/CoplayDev/unity-mcp.git?path=/MCPForUnity#main
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615104800454.webp&quot; alt=&quot;image-20260615104800454&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后检查环境,&lt;/p&gt;
&lt;p&gt;没有UV的可以装一个&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;pip install uv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615105056438.webp&quot; alt=&quot;image-20260615105056438&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;然后在这些编译器和agent里安装mcp&quot;&gt;然后在这些编译器和agent里安装MCP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后在这些编译器和agent里安装mcp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615105410265.webp&quot; alt=&quot;image-20260615105410265&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后启用服务器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615110039048.webp&quot; alt=&quot;image-20260615110039048&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;弹出终端后台&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615114041515.webp&quot; alt=&quot;image-20260615114041515&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后你可以在claude codex opencode里看到mcp已经添加&lt;/p&gt;
&lt;p&gt;例如在codex里试用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615123655624.webp&quot; alt=&quot;image-20260615123655624&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;于是就添加成功了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615124143470.webp&quot; alt=&quot;image-20260615124143470&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615124351016.webp&quot; alt=&quot;image-20260615124351016&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这玩意甚至还遵循我的脚本结构,把文件放到正确的文件夹 太强了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity%E7%9A%84MCP%E9%85%8D%E7%BD%AE/image-20260615125651917.webp&quot; alt=&quot;image-20260615125651917&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>MCP</category></item><item><title>UnityShaderGraph---地形渲染</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-di-xing-xuan-ran/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-di-xing-xuan-ran/</guid><description>我们来了解最基础的游戏贴图是怎么做的</description><pubDate>Tue, 09 Jun 2026 22:13:36 GMT</pubDate><content:encoded>&lt;h1 id=&quot;我们今天学习unity的地形渲染&quot;&gt;我们今天学习Unity的地形渲染&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#我们今天学习unity的地形渲染&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260609222218244.webp&quot; alt=&quot;image-20260609222218244&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以看这个shader脚本的前五个属性&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260609223440526.webp&quot; alt=&quot;image-20260609223440526&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260609223343531.webp&quot; alt=&quot;image-20260609223343531&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;创建地形分层shader&quot;&gt;创建地形分层shader&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建地形分层shader&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先创建一个有光照lit的shadergraph&lt;/p&gt;
&lt;p&gt;然后添加如下节点&lt;/p&gt;
&lt;p&gt;由于这些材质会默然在inspector暴露参数,我们需要取消勾选每一个“Exposed”不再暴露在inspector  (注意: 如果你是unity 6 用户,取消勾选 &lt;strong&gt;show in inspector&lt;/strong&gt;)   ,然后勾选每一个sprite的 Use Tilling and offset(平铺与偏移),并将Fragment里的smoothness平滑值设为0(这个我们之前说过,当这个不为0时材质表面上会出现一层像陶瓷轴一样的反光,这里我们不需要这个效果)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260609224633721.webp&quot; alt=&quot;image-20260609224633721&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Use Tiling and Offset&lt;/strong&gt; 用于控制纹理是否自动应用材质面板中的 &lt;strong&gt;Tiling（平铺）&lt;/strong&gt; 和 &lt;strong&gt;Offset（偏移）&lt;/strong&gt; 参数。启用后，Shader 会自动对 UV 执行 &lt;code&gt;UV × Tiling + Offset&lt;/code&gt; 计算，使开发者和美术能够直接在材质球中调整纹理的重复次数和偏移位置，而无需修改 Shader Graph。对于普通贴图材质通常建议开启，对于已经手动处理 UV 的效果（如流动纹理、Triplanar、世界空间映射等）则通常关闭以避免重复计算。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们们首先实现模型的材质的分层,添加一个control层和四个sprite层,这个是对应代码里的Control和四个图层&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; [HideInInspector] _Control(&quot;Control (RGBA)&quot;, 2D) = &quot;red&quot; {}
 [HideInInspector] _Splat3(&quot;Layer 3 (A)&quot;, 2D) = &quot;grey&quot; {}
 [HideInInspector] _Splat2(&quot;Layer 2 (B)&quot;, 2D) = &quot;grey&quot; {}
 [HideInInspector] _Splat1(&quot;Layer 1 (G)&quot;, 2D) = &quot;grey&quot; {}
 [HideInInspector] _Splat0(&quot;Layer 0 (R)&quot;, 2D) = &quot;grey&quot; {}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;标准unity地形系统支持四个纹理层,地形系统通过名为Control的首个纹理将数据传输至着色器,也就是我们添加的control纹理,纹理的每个色彩通道都记录了地形对应位置某个图层的强度值,&lt;/p&gt;
&lt;p&gt;所以红色通道对应的是第一层,也就是Sprite0&lt;/p&gt;
&lt;p&gt;绿色通道对应的是第二层,也就是Sprite1&lt;/p&gt;
&lt;p&gt;蓝色通道对应的是第三层,也就是Sprite2&lt;/p&gt;
&lt;p&gt;alpha通道对应的是第四层,也就是Sprite3&lt;/p&gt;
&lt;p&gt;而这里为了实现这个效果,可以直接用各个sprite层直接乘以control层的各个颜色的通道值,然后依此相加,最后将效果叠加到基础色上&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610145110710.webp&quot; alt=&quot;image-20260610145110710&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;目前已经可以实现分层了,但是为了让山体地形更真实,我们需要特殊处理一下&lt;/p&gt;
&lt;p&gt;需要获取地形表面的法向量,检测y轴分量,若接近1或者-1就是近乎水平的地面,若接近0表示检测到的是斜坡地形&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610150448245.webp&quot; alt=&quot;image-20260610150448245&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们添加两个浮点参数:&lt;/p&gt;
&lt;p&gt;normal start 用于控制y分量阈值用于判定岩石面的起始位置,设置为默认值为0.5取值范围0-1的slider&lt;/p&gt;
&lt;p&gt;normal end 用于控制岩石面的终止边界,默认值设为0.6取值范围0-1的slider&lt;/p&gt;
&lt;p&gt;然后使用normal vector法向量节点用split分离出y向量(也就是G通道),并使用smoothstep平滑过渡节点在normal start和normal end之间&lt;/p&gt;
&lt;p&gt;这里复习一下这个节点:   当输入值小于第一个边界值时,节点输出0,当数值大于edge2时,节点输出1,当输入值介于两者之间的时候,输出值会呈现为从0-1的平滑过渡曲线&lt;/p&gt;
&lt;p&gt;可以看到球体垂直面显示的是黑色,而顶部平坦区域显示为白色,这里不会出现全黑的情况,因为在unity实际地形环境中发现向量的y分量不会出现负值&lt;/p&gt;
&lt;p&gt;然后我们把第一层和第二层使用smoothstep传入的参数来线性插值,并和control节点的R通道相乘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610145535261.webp&quot; alt=&quot;image-20260610145535261&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们从模型网站下载一个山体的obj免费模型,然后添加合适的材质图通过调整参数来修改山体的效果,这样就可以实现了山体的材质(不过如字面意思,这就是贴图,和无人深空,荒野大镖客,黑神话悟空这些可交互地形这些没法比)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610141153134.webp&quot; alt=&quot;image-20260610141153134&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610141036656.webp&quot; alt=&quot;image-20260610141036656&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610141102609.webp&quot; alt=&quot;image-20260610141102609&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610141248666.webp&quot; alt=&quot;image-20260610141248666&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;扫描地形效果&quot;&gt;扫描地形效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#扫描地形效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们做一个扫描地形的效果	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610152728848.webp&quot; alt=&quot;image-20260610152728848&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;添加一个颜色节点并设置为HDR&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610155558083.webp&quot; alt=&quot;image-20260610155558083&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610153039280.webp&quot; alt=&quot;image-20260610153039280&quot; style=&quot;zoom: 67%;&quot;&gt;
&lt;p&gt;由于手动控制地形扫描效果过于麻烦,我们可以使用C#脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Collections&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Collections&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Generic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;UnityEngine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;WorldScanner&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token type-list&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;MonoBehaviour&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt;&lt;/span&gt; scanSpeed&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Terrain&lt;/span&gt; terrain&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Material&lt;/span&gt; terrainMaterial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt;&lt;/span&gt; scanDistance&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Start&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        terrainMaterial &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; terrain&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;materialTemplate&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        scanDistance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1000f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


    &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Input&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetMouseButtonDown&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;Vector3&lt;/span&gt; mousePos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Input&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;mousePosition&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Physics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Raycast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Camera&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ScreenPointToRay&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;mousePos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;RaycastHit&lt;/span&gt; hitInfo&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                terrainMaterial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetVector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;_ScanOrigin&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hitInfo&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;point&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                scanDistance &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        scanDistance &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; scanSpeed &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; Time&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;deltaTime&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        terrainMaterial&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetFloat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;_ScanDistance&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; scanDistance&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是之前我们为了节省时间直接从素材网站上下载的山的模型&lt;/p&gt;
&lt;h2 id=&quot;unity其实自带了地形系统&quot;&gt;unity其实自带了地形系统&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#unity其实自带了地形系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;其实我们可以自己刷一个,首先创建一个terrain&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610161121265.webp&quot; alt=&quot;image-20260610161121265&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后切换为set height并选择合适的笔刷来绘制地形&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610162403233.webp&quot; alt=&quot;image-20260610162403233&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;1-set-height设置高度&quot;&gt;1. &lt;strong&gt;Set Height（设置高度）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-set-height设置高度&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：将地形特定区域的高度设置为一个固定值。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：先设定目标高度（Height），然后在地形上刷涂，被刷到的区域会被&quot;压平&quot;到该高度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：创建平台、湖泊底部、道路基础层，或平整出建筑地基。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键参数&lt;/strong&gt;：&lt;code&gt;Height&lt;/code&gt; 滑块决定目标高度；配合 &lt;code&gt;Opacity&lt;/code&gt; 控制过渡强度。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-smooth-height平滑高度&quot;&gt;2. &lt;strong&gt;Smooth Height（平滑高度）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-smooth-height平滑高度&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：柔化地形高度的不规则起伏，消除尖锐的棱角和噪点。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：像橡皮擦一样在崎岖区域刷涂，使相邻顶点的高度差异变小。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：人工雕刻地形后消除锯齿感；让陡峭悬崖过渡更自然；修复笔刷留下的硬边。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：过度使用会让地形失去细节，变得&quot;圆滑过度&quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-paint-texture绘制纹理&quot;&gt;3. &lt;strong&gt;Paint Texture（绘制纹理）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-paint-texture绘制纹理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：在地形表面绘制不同的材质纹理（如草地、泥土、岩石、雪地）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：先在 Terrain 的 &lt;strong&gt;Paint Texture&lt;/strong&gt; 标签页添加纹理图层（Layers），每个图层包含漫反射贴图、法线贴图等，然后选择图层进行绘制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键概念&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Splat Map（ splat 贴图）&lt;/strong&gt;：Unity 使用 RGBA 通道混合最多 4 个纹理作为一个 Terrain Layer，多个 Layer 会自动分配额外的 splat 贴图。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Target Strength&lt;/strong&gt;：控制绘制强度（0-1），实现纹理过渡混合。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-paint-holes绘制孔洞&quot;&gt;4. &lt;strong&gt;Paint Holes（绘制孔洞）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-paint-holes绘制孔洞&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：在地形网格上&quot;挖洞&quot;，使该区域的 terrain 几何体不渲染。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：刷涂后该区域变成透明/空洞，可以看到地形下方的物体。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：制作洞穴入口、地下通道、地窖、竖井，或让地形与地下场景衔接。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;孔洞是&lt;strong&gt;真正的几何缺失&lt;/strong&gt;，不是透明材质。&lt;/li&gt;
&lt;li&gt;需要配合其他几何体（如洞穴模型）填补空洞，否则会看到背面或天空盒。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-stamp-terrain印章地形&quot;&gt;5. &lt;strong&gt;Stamp Terrain（印章地形）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5-stamp-terrain印章地形&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：像盖章一样将预设的高度图（Heightmap）印记到现有地形上。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：选择一个高度图纹理（通常是灰度图），调整大小、旋转、高度倍数后，点击地形放置。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：快速生成特定形状的山峰、陨石坑、台地；批量制作重复地貌特征；导入外部软件（如 World Machine）生成的高度图进行局部叠加。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：属于&lt;strong&gt;非破坏性/半破坏性&lt;/strong&gt;编辑，可以预览后再确认，适合程序化生成内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-raise-or-lower-terrain升高或降低地形&quot;&gt;6. &lt;strong&gt;Raise or Lower Terrain（升高或降低地形）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6-raise-or-lower-terrain升高或降低地形&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;作用&lt;/strong&gt;：最基本的地形笔刷，增加或减少地形高度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用法&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;左键刷涂&lt;/strong&gt;：升高地形（Raise）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;按住 Shift + 左键刷涂&lt;/strong&gt;：降低地形（Lower）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;应用场景&lt;/strong&gt;：徒手雕刻山脉、山谷、河床；快速搭建地形大形。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键参数&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Brush Size&lt;/strong&gt;：笔刷半径。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Opacity&lt;/strong&gt;：单次刷涂的强度/高度变化量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brush Shape&lt;/strong&gt;：圆形、柔边等笔刷形状影响过渡自然度。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;总结对比表&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;工具&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;核心功能&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;破坏性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;典型用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Raise/Lower&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;自由升降高度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接修改高度图&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;大形雕刻、山脉河谷&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Set Height&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;固定到目标高度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;强制平整&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;平台、地基、湖床&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Smooth&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;模糊高度差异&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;平滑现有高度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;消除锯齿、柔化过渡&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Paint Texture&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;绘制地表材质&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;修改 splat 贴图&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;草地、岩石、道路&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Paint Holes&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;删除局部网格&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;产生空洞&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;洞穴、地窖入口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Stamp&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;叠加预设高度图&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;叠加式修改&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;特定地貌、程序生成&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;画好地图后来给地图上材质,首先切换为PaintTexture模式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610193756855.webp&quot; alt=&quot;image-20260610193756855&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们点击添加图层,添加纹理并绘制,当然没有的话也可以用现有的texture来create一个&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610203726521.webp&quot; alt=&quot;image-20260610203726521&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%B0%E5%BD%A2%E6%B8%B2%E6%9F%93/image-20260610205514247.webp&quot; alt=&quot;image-20260610205514247&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们的一坨山脉就做好了&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>UnityShaderGraph---自定义函数</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-zi-ding-yi-han-shu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-zi-ding-yi-han-shu/</guid><description>本篇来学习shadergraph的自定义函数</description><pubDate>Mon, 08 Jun 2026 15:10:23 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来看自定义函数&quot;&gt;今天来看自定义函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来看自定义函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;因为部分想要的效果无法通过unity内置的节点实现,所以我们可以自定义函数&lt;/p&gt;
&lt;p&gt;众所周知,unity的shdergraph本质上是shader的&lt;strong&gt;HLSL&lt;/strong&gt;和&lt;strong&gt;ShaderLab&lt;/strong&gt;代码的可视化,这是计算机图形学的内容&lt;/p&gt;
&lt;p&gt;但是shadergraph具有一定的局限性,比如同样的shadergraph换一个引擎就不能用了,以及部分效果无法用节点实现&lt;/p&gt;
&lt;p&gt;如果你对脚本版本的shader感兴趣可以学一下方便理解节点(不过我数学不好,看不懂)&lt;/p&gt;
&lt;p&gt;我们复用之前学习&lt;strong&gt;自定义光照&lt;/strong&gt;时的celshaded的shadergraph&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260608152354178.webp&quot; alt=&quot;image-20260608152354178&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们首先创建自定义节点&lt;/p&gt;
&lt;p&gt;然后自己在VScode或者VS或Rider里创建一个hlsl文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260608162239276.webp&quot; alt=&quot;image-20260608162239276&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在 Unity Shader Graph 中，&lt;strong&gt;Precision（精度）&lt;/strong&gt; 指的是节点和整个 Shader 计算时使用的数值精度类型。它主要影响 &lt;strong&gt;GPU 性能&lt;/strong&gt;、&lt;strong&gt;内存占用&lt;/strong&gt; 和 &lt;strong&gt;渲染质量&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;






















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;精度&lt;/th&gt;&lt;th&gt;全称&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;th&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Half&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;16-bit floating point (fp16)&lt;/td&gt;&lt;td&gt;低精度，计算快，占用少&lt;/td&gt;&lt;td&gt;颜色、UV、简单运算、移动设备&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Single&lt;/strong&gt;(float)&lt;/td&gt;&lt;td&gt;32-bit floating point (fp32)&lt;/td&gt;&lt;td&gt;高精度，计算慢，占用多&lt;/td&gt;&lt;td&gt;位置、深度、复杂数学运算、需要高精度的效果&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;我们在hlsl里输入以下代码,这里就直接给完整的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;hlsl&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-hlsl&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainLight_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    Light mainLight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetMainLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainLight_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    Light mainLight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetMainLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AdditionalLight_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AdditionalLight_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AllAdditionalLights_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float2&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; LightColor&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    LightColor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;smoothstep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        LightColor &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AllAdditionalLights_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half2&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; LightColor&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    LightColor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;smoothstep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        LightColor &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260608224240547.webp&quot; alt=&quot;image-20260608224240547&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们这个脚本运用到刚才的自定义函数 Mainlight节点上,并设置输入 vector3类型的worldpos(世界坐标) 输入 和 vector3类型direction(方向) 和 Color (颜色)以及 浮点类型的Attenuation(虚弱) 输出&lt;/p&gt;
&lt;p&gt;此时不再使用之前的 main light direction主光源节点和 negate取反节点&lt;/p&gt;
&lt;p&gt;先实现主要的参数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;hlsl&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-hlsl&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这个是单精度模式&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainLight_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    Light mainLight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetMainLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这个是半精度模式&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainLight_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;&lt;/span&gt;
    Light mainLight &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetMainLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; mainLight&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ADDITIONAL_LIGHT_INCLUDED&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260608231557905.webp&quot; alt=&quot;image-20260608231557905&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;先给自定义的这个节点输入position world 位置节点&lt;/p&gt;
&lt;p&gt;我们需要考虑衰减因素,获取环境光插值节点 lerp,然后乘以光源亮度后再和衰减值相乘后与基础色相乘&lt;/p&gt;
&lt;p&gt;此时已经可以通过调整灯光控制材质颜色了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260608231933106.webp&quot; alt=&quot;image-20260608231933106&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于这是主光源的情况,而如果在物体旁边添加其他的点光源则需要额外的自定义函数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;hlsl&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-hlsl&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//这个是单精度&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AdditionalLight_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这个是半精度&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AdditionalLight_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; Color&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half&lt;/span&gt; Attenuation&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;normalize&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lightID&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Direction &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Attenuation &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样的加入自定义函数并按照HLSL脚本导入输入和输出&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609164236349.webp&quot; alt=&quot;image-20260609164236349&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于shader无法使用像for循环那样的遍历场景里的每一个光源,这就导致不仅要复制附加光源节点还要对每个光源进行计算,而且无法动态监测实际存在的光源的数量,所以现在是假设场景里是有4个光源&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609163938172.webp&quot; alt=&quot;image-20260609163938172&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到现在节点实在是太多了,我们可以使用之前学的子图sub来简化,把特定的功能封装进子图只暴露输入输出接口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609163903536.webp&quot; alt=&quot;image-20260609163903536&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609165111783.webp&quot; alt=&quot;image-20260609165111783&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;包括前面的position节点也要包含在内,不然编辑器会报错空引用&lt;/p&gt;
&lt;p&gt;子图添加light ID float属性,将输出值改为vector3类型的lightColor&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609170702840.webp&quot; alt=&quot;image-20260609170702840&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在主图里需要复制四个子图并赋值给Light ID为1&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609171133640.webp&quot; alt=&quot;image-20260609171133640&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是这种方法相比你也发现了,如果场景里超过四盏灯就不行了,第五个灯光将不会被检测,而且需要添加一大堆节点&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;hlsl&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-hlsl&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AllAdditionalLights_float&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float2&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; LightColor&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    LightColor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;smoothstep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        LightColor &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;AllAdditionalLights_half&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half2&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;out&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;half3&lt;/span&gt; LightColor&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    LightColor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.0f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifndef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;SHADERGRAPH_PREVIEW&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; lightCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLightsCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; lightCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        Light light &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;GetAdditionalLight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldPos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;float3&lt;/span&gt; color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direction&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; WorldNormal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;smoothstep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; CutoffThresholds&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        color &lt;span class=&quot;token operator&quot;&gt;*=&lt;/span&gt; light&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;distanceAttenuation&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        LightColor &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609172551549.webp&quot; alt=&quot;image-20260609172551549&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们使用一个新的自定义函数节点,此时只需要一个节点便可以解决,但是仍然只能处理8个光源&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0/image-20260609173407202.webp&quot; alt=&quot;image-20260609173407202&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图,我们的圈出来的这个红色光源没有渲染出来,是因为这是小球材质上的第9个光源&lt;/p&gt;
&lt;p&gt;这个是因为unity默认每个物体最多可以接收8个除了主光源以外的额外光源的光来节约性能,因为光源太多会加重GPU的负担&lt;/p&gt;
&lt;p&gt;所以我们明白了一件事就是节点不是万能的,有的时候需要自己写HLSL&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>初见UE</title><link>https://huyangpahuo.vercel.app/posts/chu-jian-ue/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/chu-jian-ue/</guid><description>本篇为初次尝试unreal engine</description><pubDate>Sun, 07 Jun 2026 19:43:58 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来看看unreal-engine也就是虚幻引擎还从来没用过&quot;&gt;今天来看看Unreal Engine,也就是虚幻引擎,还从来没用过&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来看看unreal-engine也就是虚幻引擎还从来没用过&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/UnrealEngine/%E5%88%9D%E8%A7%81UE/image-20260607194707527.webp&quot; alt=&quot;image-20260607194707527&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;居然还有这么人性化的教程&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/UnrealEngine/%E5%88%9D%E8%A7%81UE/image-20260607195321996.webp&quot; alt=&quot;image-20260607195321996&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个大概和Unity差不多,类似scene game hierarchy inspector 和asset窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/UnrealEngine/%E5%88%9D%E8%A7%81UE/image-20260607200822635.webp&quot; alt=&quot;image-20260607200822635&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样调整一下布局感觉看懂了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/UnrealEngine/%E5%88%9D%E8%A7%81UE/image-20260607201140812.webp&quot; alt=&quot;image-20260607201140812&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是虚幻引擎非常的吃电脑配置,我的电脑是办公本,不适合UE这种,运行游戏场景时非常的卡,不过unity的还可以&lt;/p&gt;</content:encoded><category>UnrealEngine</category><category>UE</category></item><item><title>UnityShaderGraph---场景相交检测</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-chang-jing-xiang-jiao-jian-ce/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-chang-jing-xiang-jiao-jian-ce/</guid><description>本篇来学习如何处理物品相交之间的阴影</description><pubDate>Sun, 31 May 2026 14:27:37 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天我们来学习场景相交检测&quot;&gt;今天我们来学习场景相交检测&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天我们来学习场景相交检测&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;现实中的物体如果发生相交就会在两者的接触面会有阴影,例如你的手机放在桌面上可以看到手机和桌面的黑色阴影接触线,这个在unity中同样也是可以实现的&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531143806992.webp&quot; alt=&quot;image-20260531143806992&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;当着色器运行时它只能直接访问当前正在渲染的像素信息包括其在世界空间中的位置,我们想将该位置与在这个物体后面渲染的对象的位置进行比较,如果两点之间的距离小于我们指定的阈值,就检测到了一个交点&lt;/p&gt;
&lt;p&gt;unity仅在之后将深度缓冲区的状态保存到深度纹理中,会先渲染所有不透明物体,再渲染所有透明物体,而着色器无法检测到任意两个透明物体之间的交叉&lt;/p&gt;
&lt;p&gt;之前我们讲深度纹理的时候,提到过这个游戏场景是怎么渲染到摄像机的,也就是裁剪空间&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531144817077.webp&quot; alt=&quot;image-20260531144817077&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;unity随后通过根据相机的参数将一些裁剪空间坐标转换为屏幕空间坐标&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531144850095.webp&quot; alt=&quot;image-20260531144850095&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531145519427.webp&quot; alt=&quot;image-20260531145519427&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而这个向量第四个分量等于相机与被渲染顶点之间的距离&lt;/p&gt;
&lt;p&gt;然后就是其次坐标的概念(我也没看懂这个东西,这玩意就是大一的时候没学明白的线性代数的知识)&lt;/p&gt;
&lt;h2 id=&quot;其次坐标&quot;&gt;其次坐标&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#其次坐标&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一句话定义&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;齐次坐标 = 用 N+1 个分量来表示 N 维空间中的点/向量&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;维度&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;普通坐标&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;齐次坐标&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;2D&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y, w)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;3D&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y, z)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y, z, w)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;4D&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y, z, w)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;(x, y, z, w, v)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;为什么要多一个 w？&lt;/p&gt;
&lt;p&gt;核心目的：&lt;strong&gt;用矩阵乘法统一表示平移、旋转、缩放&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;普通 3×3 矩阵只能做&lt;strong&gt;旋转和缩放&lt;/strong&gt;，&lt;strong&gt;无法做平移&lt;/strong&gt;：&lt;/p&gt;
&lt;span class=&quot;katex-display&quot;&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo fence=&quot;true&quot;&gt;[&lt;/mo&gt;&lt;mtable rowspacing=&quot;0.16em&quot; columnalign=&quot;center center center&quot; columnspacing=&quot;1em&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;h&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo fence=&quot;true&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo fence=&quot;true&quot;&gt;[&lt;/mo&gt;&lt;mtable rowspacing=&quot;0.16em&quot; columnalign=&quot;center&quot; columnspacing=&quot;1em&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo fence=&quot;true&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mtext&gt;旋转/缩放后的结果&lt;/mtext&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\begin{bmatrix} a &amp;#x26; b &amp;#x26; c \\ d &amp;#x26; e &amp;#x26; f \\ g &amp;#x26; h &amp;#x26; i \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \text{旋转/缩放后的结果}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:3.6em;vertical-align:-1.55em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;minner&quot;&gt;&lt;span class=&quot;mopen&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:5.6em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:3.6em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;3.6em&quot; viewBox=&quot;0 0 667 3600&quot;&gt;&lt;path d=&quot;M403 1759 V84 H666 V0 H319 V1759 v0 v1759 v84 h347 v-84
H403z M403 1759 V0 H319 V1759 v0 v1759 v84 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mtable&quot;&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.01em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0359em;&quot;&gt;g&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.01em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;h&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.01em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1076em;&quot;&gt;f&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:5.6em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:3.6em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;3.6em&quot; viewBox=&quot;0 0 667 3600&quot;&gt;&lt;path d=&quot;M347 1759 V0 H0 V84 H263 V1759 v0 v1759 H0 v84 H347z
M347 1759 V0 H263 V1759 v0 v1759 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;minner&quot;&gt;&lt;span class=&quot;mopen&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:5.6em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:3.6em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;3.6em&quot; viewBox=&quot;0 0 667 3600&quot;&gt;&lt;path d=&quot;M403 1759 V84 H666 V0 H319 V1759 v0 v1759 v84 h347 v-84
H403z M403 1759 V0 H319 V1759 v0 v1759 v84 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mtable&quot;&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.01em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0359em;&quot;&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.044em;&quot;&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.05em;&quot;&gt;&lt;span style=&quot;top:-4.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:5.6em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:3.6em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;3.6em&quot; viewBox=&quot;0 0 667 3600&quot;&gt;&lt;path d=&quot;M347 1759 V0 H0 V84 H263 V1759 v0 v1759 H0 v84 H347z
M347 1759 V0 H263 V1759 v0 v1759 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.55em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord text&quot;&gt;&lt;span class=&quot;mord cjk_fallback&quot;&gt;旋转&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;mord cjk_fallback&quot;&gt;缩放后的结果&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;但平移是加法：&lt;code&gt;newPos = pos + offset&lt;/code&gt;，矩阵乘法只有乘法没有加法。&lt;/p&gt;
&lt;p&gt;齐次坐标的解决方案&lt;/p&gt;
&lt;p&gt;把 3D 点变成 4D，w=1：&lt;/p&gt;
&lt;span class=&quot;katex-display&quot;&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot; display=&quot;block&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mrow&gt;&lt;mo fence=&quot;true&quot;&gt;[&lt;/mo&gt;&lt;mtable rowspacing=&quot;0.16em&quot; columnalign=&quot;center center center center&quot; columnspacing=&quot;1em&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;11&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;13&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;21&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;22&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;23&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;31&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;32&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mn&gt;33&lt;/mn&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;msub&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;/msub&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo fence=&quot;true&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mo fence=&quot;true&quot;&gt;[&lt;/mo&gt;&lt;mtable rowspacing=&quot;0.16em&quot; columnalign=&quot;center&quot; columnspacing=&quot;1em&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mi&gt;z&lt;/mi&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo fence=&quot;true&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mrow&gt;&lt;mo fence=&quot;true&quot;&gt;[&lt;/mo&gt;&lt;mtable rowspacing=&quot;0.16em&quot; columnalign=&quot;center&quot; columnspacing=&quot;1em&quot;&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo&gt;⋅&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mo&gt;⃗&lt;/mo&gt;&lt;/mover&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;mover accent=&quot;true&quot;&gt;&lt;mi&gt;T&lt;/mi&gt;&lt;mo&gt;⃗&lt;/mo&gt;&lt;/mover&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mstyle scriptlevel=&quot;0&quot; displaystyle=&quot;false&quot;&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mstyle&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;mo fence=&quot;true&quot;&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;\begin{bmatrix} R_{11} &amp;#x26; R_{12} &amp;#x26; R_{13} &amp;#x26; T_x \\ R_{21} &amp;#x26; R_{22} &amp;#x26; R_{23} &amp;#x26; T_y \\ R_{31} &amp;#x26; R_{32} &amp;#x26; R_{33} &amp;#x26; T_z \\ 0 &amp;#x26; 0 &amp;#x26; 0 &amp;#x26; 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = \begin{bmatrix} R \cdot \vec{p} + \vec{T} \\ 1 \end{bmatrix}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:4.8em;vertical-align:-2.15em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;minner&quot;&gt;&lt;span class=&quot;mopen&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.65em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:6.8em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:4.8em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;4.8em&quot; viewBox=&quot;0 0 667 4800&quot;&gt;&lt;path d=&quot;M403 1759 V84 H666 V0 H319 V1759 v1200 v1759 v84 h347 v-84
H403z M403 1759 V0 H319 V1759 v1200 v1759 v84 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mtable&quot;&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;11&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.61em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.41em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;31&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.61em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;22&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.41em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;32&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;13&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.61em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;23&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.41em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.3011em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;33&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;arraycolsep&quot; style=&quot;width:0.5em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.1514em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.61em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.1514em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot; style=&quot;margin-right:0.0359em;&quot;&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.2861em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.41em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.1514em;&quot;&gt;&lt;span style=&quot;top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mathnormal mtight&quot; style=&quot;margin-right:0.044em;&quot;&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.65em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:6.8em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:4.8em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;4.8em&quot; viewBox=&quot;0 0 667 4800&quot;&gt;&lt;path d=&quot;M347 1759 V0 H0 V84 H263 V1759 v1200 v1759 H0 v84 H347z
M347 1759 V0 H263 V1759 v1200 v1759 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;minner&quot;&gt;&lt;span class=&quot;mopen&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.65em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:6.8em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:4.8em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;4.8em&quot; viewBox=&quot;0 0 667 4800&quot;&gt;&lt;path d=&quot;M403 1759 V84 H666 V0 H319 V1759 v1200 v1759 v84 h347 v-84
H403z M403 1759 V0 H319 V1759 v1200 v1759 v84 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mtable&quot;&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.81em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.61em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0359em;&quot;&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.41em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.044em;&quot;&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-1.21em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;&lt;span class=&quot;delimsizing mult&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.65em;&quot;&gt;&lt;span style=&quot;top:-4.65em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:6.8em;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;width:0.667em;height:4.8em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.667em&quot; height=&quot;4.8em&quot; viewBox=&quot;0 0 667 4800&quot;&gt;&lt;path d=&quot;M347 1759 V0 H0 V84 H263 V1759 v1200 v1759 H0 v84 H347z
M347 1759 V0 H263 V1759 v1200 v1759 h84z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:2.15em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mrel&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2778em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:2.5263em;vertical-align:-1.0132em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;minner&quot;&gt;&lt;span class=&quot;mopen delimcenter&quot; style=&quot;top:0em;&quot;&gt;&lt;span class=&quot;delimsizing size3&quot;&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mtable&quot;&gt;&lt;span class=&quot;col-align-c&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.5132em;&quot;&gt;&lt;span style=&quot;top:-3.5468em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0077em;&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;⋅&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord accent&quot;&gt;&lt;span class=&quot;vlist-t vlist-t2&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.714em;&quot;&gt;&lt;span style=&quot;top:-3em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;p&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;accent-body&quot; style=&quot;left:-0.1522em;&quot;&gt;&lt;span class=&quot;overlay&quot; style=&quot;height:0.714em;width:0.471em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.471em&quot; height=&quot;0.714em&quot; style=&quot;width:0.471em&quot; viewBox=&quot;0 0 471 714&quot; preserveAspectRatio=&quot;xMinYMin&quot;&gt;&lt;path d=&quot;M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.1944em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord accent&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.9663em;&quot;&gt;&lt;span style=&quot;top:-3em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.1389em;&quot;&gt;T&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-3.2523em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;accent-body&quot; style=&quot;left:-0.1522em;&quot;&gt;&lt;span class=&quot;overlay&quot; style=&quot;height:0.714em;width:0.471em;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;0.471em&quot; height=&quot;0.714em&quot; style=&quot;width:0.471em&quot; viewBox=&quot;0 0 471 714&quot; preserveAspectRatio=&quot;xMinYMin&quot;&gt;&lt;path d=&quot;M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5
3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
c-16-25.333-24-45-24-59z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;top:-2.3468em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:3em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-s&quot;&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:1.0132em;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;mclose delimcenter&quot; style=&quot;top:0em;&quot;&gt;&lt;span class=&quot;delimsizing size3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;p&gt;&lt;strong&gt;最后一列就是平移量！&lt;/strong&gt; 一个 4×4 矩阵同时搞定了旋转、缩放、平移。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;w 的两个关键作用&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;w = 1 → 点（Point）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以平移：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;[x, y, z, 1]  ×  矩阵  =  [x&apos;, y&apos;, z&apos;, 1]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;w = 0 → 向量（Vector）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不能平移（方向不变）：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;[x, y, z, 0]  ×  矩阵  =  [x&apos;, y&apos;, z&apos;, 0]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;向量代表方向，平移没有意义。w=0 时矩阵的平移分量会被消掉。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;投影变换：w 的第三个作用&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;透视投影&lt;/strong&gt;需要除法，但 GPU 的顶点着色器输出的是 4D 齐次坐标。w 在这里存储了&lt;strong&gt;透视除法的分母&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;裁剪空间输出: (x, y, z, w)
↓
透视除法: (x/w, y/w, z/w)
↓
NDC 空间: (-1~1, -1~1, 0~1)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;w 越大（物体越远），除完后坐标越小，实现&lt;strong&gt;近大远小&lt;/strong&gt;的透视效果。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;在 Unity Shader Graph 中的体现&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;节点&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Position (Object)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;(x, y, z, 1)&lt;/code&gt; — 模型空间点&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Position (World)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;经过 Model 矩阵变换后的点&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Position (Clip)&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;经过 MVP 矩阵后的齐次坐标 &lt;code&gt;(x, y, z, w)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Screen Position&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;经过透视除法后的 &lt;code&gt;(x/w, y/w)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;一句话总结&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;齐次坐标用多一个 w 分量，把&quot;平移&quot;塞进矩阵乘法里，同时让透视投影的除法有地方存分母。&lt;/strong&gt; 是 3D 图形管线能高效运行的数学基础。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们添加一个scene depth节点来获取相机和物体之间的距离,并设置为eye模式来获取精确值,&lt;/p&gt;
  &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603151708188.webp&quot; alt=&quot;image-20260603151708188&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;Scene Depth 从深度纹理中读取当前屏幕位置记录的深度值,表示：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;沿着当前像素对应的视线方向，场景中已经写入深度缓冲区的表面距离摄像机有多远&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;全称含义&lt;/th&gt;&lt;th&gt;数值范围&lt;/th&gt;&lt;th&gt;核心特点&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Eye&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Eye-space depth&lt;/td&gt;&lt;td&gt;非线性，近处密集、远处稀疏&lt;/td&gt;&lt;td&gt;相机空间的真实深度值，非线性分布&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Linear01&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Linear 0-1 depth&lt;/td&gt;&lt;td&gt;&lt;strong&gt;[0, 1]&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;线性映射到 [0,1]，0=近裁剪面，1=远裁剪面&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Raw&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Raw depth buffer value&lt;/td&gt;&lt;td&gt;&lt;strong&gt;[0, 1] 或平台相关&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;深度纹理的原始存储值，通常是反向Z的非线性值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;然后添加screen position节点并设置为Raw模式,&lt;/p&gt;
&lt;p&gt;Screen Position 返回当前着色器像素在屏幕上的位置，以多种坐标系形式输出，返回当前像素的屏幕空间位置 &lt;code&gt;(x,y,z,w)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;对于 Raw 模式下的 Screen Position，w 可以用于获得当前像素相对于摄像机的深度信息（Eye Depth）。&lt;/p&gt;
&lt;p&gt;用于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采样屏幕纹理（如 Scene Color、Scene Depth）&lt;/li&gt;
&lt;li&gt;制作基于屏幕坐标的特效（扫描线、故障艺术、径向模糊中心点）&lt;/li&gt;
&lt;li&gt;实现与分辨率无关的 2D 效果&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;














































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;坐标系&lt;/th&gt;&lt;th&gt;返回值&lt;/th&gt;&lt;th&gt;范围&lt;/th&gt;&lt;th&gt;核心特点&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Default&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;屏幕左下角原点&lt;/td&gt;&lt;td&gt;归一化 UV (x, y, z, w)&lt;/td&gt;&lt;td&gt;x,y: [0, 1]&lt;/td&gt;&lt;td&gt;&lt;strong&gt;最常用&lt;/strong&gt;，采样屏幕纹理的标准 UV&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Raw&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;裁剪空间&lt;/td&gt;&lt;td&gt;齐次坐标 (x, y, z, w)&lt;/td&gt;&lt;td&gt;未归一化，含透视除数 w&lt;/td&gt;&lt;td&gt;手动做透视除法，极少用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Center&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;屏幕中心原点&lt;/td&gt;&lt;td&gt;归一化坐标 (x, y, z, w)&lt;/td&gt;&lt;td&gt;x,y: [-1, 1]&lt;/td&gt;&lt;td&gt;径向特效、对称遮罩&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiled&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;平铺模式&lt;/td&gt;&lt;td&gt;自动平铺的 UV (x, y, z, w)&lt;/td&gt;&lt;td&gt;重复平铺，范围无限制&lt;/td&gt;&lt;td&gt;网格、重复图案&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Pixel&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;屏幕像素坐标&lt;/td&gt;&lt;td&gt;实际像素位置 (x, y, z, w)&lt;/td&gt;&lt;td&gt;x,y: [0, 屏幕宽高]&lt;/td&gt;&lt;td&gt;&lt;strong&gt;像素级精确控制&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;然后用split节点分出第四个分量w&lt;/p&gt;
&lt;p&gt;还记得之前的这个图吗&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531143806992.webp&quot; alt=&quot;image-20260531143806992&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;mermaid&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-mermaid&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;graph&lt;/span&gt; LR

Camera&lt;span class=&quot;token text string&quot;&gt;[&quot;📷 Camera&quot;]&lt;/span&gt;

Sphere&lt;span class=&quot;token text string&quot;&gt;[&quot;🔵 当前正在绘制的物体&quot;]&lt;/span&gt;
Floor&lt;span class=&quot;token text string&quot;&gt;[&quot;⬜ 地面(已经渲染到Depth Buffer)&quot;]&lt;/span&gt;

Camera &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt;&lt;span class=&quot;token label property&quot;&gt;|&quot;Current Depth = 8&quot;|&lt;/span&gt; Sphere
Camera &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt;&lt;span class=&quot;token label property&quot;&gt;|&quot;Scene Depth = 10&quot;|&lt;/span&gt; Floor

Sphere &lt;span class=&quot;token arrow operator&quot;&gt;--&gt;&lt;/span&gt;&lt;span class=&quot;token label property&quot;&gt;|&quot;Depth Difference = 10 - 8 = 2&quot;|&lt;/span&gt; Result&lt;span class=&quot;token text string&quot;&gt;[&quot;Intersection Depth&quot;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;SceneDepth  = 后面的表面距离摄像机多远&lt;/p&gt;
&lt;p&gt;ScreenPosition.w = 当前表面距离摄像机多远&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不过刚才的那几个节点我们要重复使用,我们可以使用子图来实现,类似于一个函数,只暴露输入口和输出口&lt;/p&gt;
&lt;h2 id=&quot;子图&quot;&gt;子图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#子图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260531150723716.webp&quot; alt=&quot;image-20260531150723716&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以使用子图,这里理解一下子图的概念&lt;/p&gt;
&lt;p&gt;Unity Shader Graph 的子图（Sub Graph）是一种模块化的着色器构建方式，允许你将一组节点封装成可复用的资产，然后在主 Shader Graph 或其他子图中调用它。这类似于编程中的函数或类，能显著提升复杂着色器的可维护性和复用性&lt;/p&gt;
&lt;p&gt;子图是一个独立的 &lt;code&gt;.shadersubgraph&lt;/code&gt; 资产，包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;输入端口（Input）&lt;/strong&gt;：定义外部传入的数据（如颜色、向量、纹理采样结果）+&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内部节点网络&lt;/strong&gt;：实现特定功能（如边缘光、顶点动画、噪声混合）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出端口（Output）&lt;/strong&gt;：返回处理后的结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;创建方式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在asset窗口里右键 &lt;strong&gt;Create → Shader Graph → Sub Graph&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;或在 Shader Graph 编辑器中选中一组节点 → 右键 &lt;strong&gt;Convert to Sub-graph&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603154023234.webp&quot; alt=&quot;image-20260603154023234&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们选中这些节点然后将这几个合并为子图,放在项目的任意位置&lt;/p&gt;
&lt;p&gt;如图我们已经创建成功&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603154307311.webp&quot; alt=&quot;image-20260603154307311&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;添加控制器&quot;&gt;添加控制器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加控制器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;双击就可以进入子图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603154331947.webp&quot; alt=&quot;image-20260603154331947&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于这个子图没有输入,但是必须输出,所以我们可以创建一个浮点输出类型取名为out&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603154756669.webp&quot; alt=&quot;image-20260603154756669&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们将模式设置transparent透明,然后将子图连接到基础色上&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603160253743.webp&quot; alt=&quot;image-20260603160253743&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;将其运用到小球上,可以注意到交界处有黑色阴影&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603160443462.webp&quot; alt=&quot;image-20260603160443462&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时说明已经可以检测交叉处状态了,但是我们需要当球体远离交叉处时阴影逐渐降低&lt;/p&gt;
&lt;p&gt;我们添加One minus节点(这个我们之前用过)来实现远离时值的降低,但是由于远离的时候的值会变成负数,所以我们需要这个Saturate节点来将负数值设置为0,超过1的值设为1&lt;/p&gt;
&lt;p&gt;然后我们需要控制这个渐变值 首先添加一个intersection power的float类型用来控制,然后将其变成默认值为1 范围0.01~25的slider滑块,0会完全遮挡,但是25的遮挡效果非常微弱&lt;/p&gt;
&lt;p&gt;为了更方便的调整遮挡效果的明暗度,我们添加一个Occlusion strength值来控制明暗度,这样要控制明暗度就可以直接控制这个occlusion就可以了&lt;/p&gt;
&lt;p&gt;然后用lerp 节点线性插值来控制颜色和强度,T槽导入颜色的强度,A槽为设置的基础色的颜色,B槽添加一个float节点设置为0代表黑色,这样就可以让颜色混合更自然&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603162910443.webp&quot; alt=&quot;image-20260603162910443&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;这里温习一下这几个节点&quot;&gt;这里温习一下这几个节点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这里温习一下这几个节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;①  One Minus 节点就是&lt;strong&gt;1 减去输入值&lt;/strong&gt;，即：&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输出 = 1 - 输入
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;数学本质&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;输出&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.25&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.75&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.75&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.25&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;效果：将数值&quot;翻转&quot;——黑的变白，白的变黑，0 变 1，1 变 0。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;② Lerp 节点就是&lt;strong&gt;线性插值（Linear Interpolation）&lt;/strong&gt;，在 Shader Graph 中用于在两个值之间按百分比混合。&lt;/p&gt;
&lt;p&gt;数学公式&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Lerp(A, B, T) = A + (B - A) × T
              = A × (1 - T) + B × T
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;T 值&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;完全 A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.25&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;75% A + 25% B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A 和 B 各一半&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.75&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;25% A + 75% B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;完全 B&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;三个端口&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;名称&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;起始值&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;T=0 时的输出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;结束值&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;T=1 时的输出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;插值因子&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制混合比例，范围通常 0~1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;③ Saturate 节点就是&lt;strong&gt;把输入值限制在 [0, 1] 范围内&lt;/strong&gt;，超出的部分被截断。&lt;/p&gt;
&lt;p&gt;数学公式&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Saturate(x) = clamp(x, 0, 1)

x &amp;#x3C; 0  → 输出 0
0 ≤ x ≤ 1 → 输出 x（不变）
x &gt; 1  → 输出 1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;输入输出对照&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;输出&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;-0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.3&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.8&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;1.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里是**普通材质(左)&lt;strong&gt;和我们&lt;/strong&gt;场景相交材质(右)**的区别,可以看到右侧的融合的更自然,而且很有原神这些二游那味&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603162438341.webp&quot; alt=&quot;image-20260603162438341&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;比如我们的小球现在只漏出来一点点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603195615167.webp&quot; alt=&quot;image-20260603195615167&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后露出来很多&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603195644722.webp&quot; alt=&quot;image-20260603195644722&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样就很直观了&lt;/p&gt;
&lt;h2 id=&quot;海水波浪泡沫效果&quot;&gt;海水波浪泡沫效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#海水波浪泡沫效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;还记得之前我们做过一个波浪图吗?&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603201730525.webp&quot; alt=&quot;image-20260603201730525&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们需要复制一个来复用&lt;/p&gt;
&lt;p&gt;我们可以为这些属性分组&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603202602329.webp&quot; alt=&quot;image-20260603202602329&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;上一篇我们知道这个场景相交必须是透明transparent材质,所以我们设置为透明材质&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603202732721.webp&quot; alt=&quot;image-20260603202732721&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;之前的节点都保持不变&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603215246881.webp&quot; alt=&quot;image-20260603215246881&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们先把上一篇我们做的DepthIntersection节点插入(还记得这个是干什么的吗? 这个是用来计算相交的阴影逻辑的),&lt;/p&gt;
&lt;p&gt;我们用这个深度交叉值使用divide除法节点除以我们自定义的float类型的Form distance(泡沫距离)参数,这个参数设置为默认值为1范围0~5的slider,&lt;/p&gt;
&lt;p&gt;然后我们用之前的step阶梯函数节点做一个限制,将edge值(x)设置为1(也就是当深度值低于某个阈值时,这组节点才会输出1)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603223027770.webp&quot; alt=&quot;image-20260603223027770&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603223059414.webp&quot; alt=&quot;image-20260603223059414&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后再添加一个color节点来控制泡沫颜色,当然还是要和基础色相加来控制海浪的颜色,此时Basecolor组用split 来分出alpha阿尔法值进行控制透明度&lt;/p&gt;
&lt;h3 id=&quot;这里复习一下之前学的step节点&quot;&gt;这里复习一下之前学的Step节点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这里复习一下之前学的step节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Step 节点就是&lt;strong&gt;阶梯函数/阶跃函数&lt;/strong&gt;，根据阈值把输入分成两部分：0 或 1。&lt;/p&gt;
&lt;p&gt;数学公式&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Step(Edge, In) = In &gt;= Edge ? 1 : 0

输入 ≥ 阈值 → 输出 1
输入 &amp;#x3C; 阈值 → 输出 0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;两个端口&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;名称&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Edge&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;阈值/边缘&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;分界点，默认 0.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;In&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输入值&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;要被判断的数值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603221356612.webp&quot; alt=&quot;image-20260603221356612&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;很好,我们已经看到其他模型和水材质接触的时候有白色的交叉面了&lt;/p&gt;
&lt;p&gt;但是,我们也不希望我们的游戏里的水面效果如此简单吧(我记得以前玩的很多小游戏水面效果就是这样,当然也不是不能玩)&lt;/p&gt;
&lt;p&gt;所以至少要真实一点点就像这样&lt;/p&gt;
&lt;p&gt;不过由于我们没有高精度水面模型况且是在URP下操作的,所以水面波浪就这样吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603223523731.webp&quot; alt=&quot;image-20260603223523731&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;噪波效果&quot;&gt;噪波效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#噪波效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在 Unity Shader Graph 的 &lt;strong&gt;Simple Noise&lt;/strong&gt; 节点中，&lt;strong&gt;Deterministic&lt;/strong&gt; 和 &lt;strong&gt;Legacy Sine&lt;/strong&gt; 是 &lt;strong&gt;Hash Type（哈希类型）&lt;/strong&gt; 下拉菜单中的两个选项，它们决定了节点生成伪随机值（即噪声）时使用的哈希函数&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Scale 值&lt;/th&gt;&lt;th&gt;效果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;较小（如 1~5）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;噪声图案&lt;strong&gt;更大、更稀疏&lt;/strong&gt;，单个噪声&quot;斑点&quot;尺寸大，过渡平缓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;较大（如 50~100）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;噪声图案&lt;strong&gt;更细小、更密集&lt;/strong&gt;，高频细节丰富，纹理更细碎&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;非常大（如 500+）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;可能开始出现&lt;strong&gt;重复或伪影&lt;/strong&gt;（因为哈希精度限制），图案趋于混乱&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;选项&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Deterministic&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;使用一个跨平台一致的哈希函数，确保在不同 GPU 和平台上生成&lt;strong&gt;完全相同的噪声结果&lt;/strong&gt;。这是 Unity 2021.2 之后的默认选项。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;需要跨平台一致性、可复现结果的项目&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Legacy Sine&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;使用基于 &lt;code&gt;sin()&lt;/code&gt; 函数的传统哈希函数。这个方式在&lt;strong&gt;不同 GPU 上可能产生差异&lt;/strong&gt;，某些集成显卡甚至会出现明显的块状伪影或完全错误的结果。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;旧项目兼容&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603223712307.webp&quot; alt=&quot;image-20260603223712307&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;噪波可以让原本不自然的效果变得逼真自然,很多游戏的地图的生成也是用波函数坍缩实现的,在这个simple noise节点中有两个输入,UV用于噪声的坐标,不过我们可以使用任意的vector2的类型,另一个scale是比例尺用于控制噪声大小,这里添加一个Foam scale浮点类型默认值为500&lt;/p&gt;
&lt;p&gt;为实现动态噪点,我们可以添加一个Foam velocity的vector 2值,然后和时间相乘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603225457891.webp&quot; alt=&quot;image-20260603225457891&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在step中接入&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603230318701.webp&quot; alt=&quot;image-20260603230318701&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们复习一下这几个节点&lt;/p&gt;
&lt;p&gt;① Time 节点&lt;strong&gt;提供时间值，让材质动起来&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;输出端口&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;th&gt;典型用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;自场景加载以来的总时间（秒），持续递增&lt;/td&gt;&lt;td&gt;持续循环的动画，如流动的水、飘动的云&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Sine Time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;sin(Time)&lt;/code&gt;，范围 -1 ~ 1，周期性波动&lt;/td&gt;&lt;td&gt;平滑的往复运动，如呼吸灯、摆动&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Cosine Time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;cos(Time)&lt;/code&gt;，范围 -1 ~ 1，与 Sine 相位差 90°&lt;/td&gt;&lt;td&gt;与 Sine 配合做圆周运动或交替效果&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Delta Time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;上一帧的耗时（秒），每帧不同&lt;/td&gt;&lt;td&gt;帧率无关的动画、物理模拟、平滑插值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Smooth Time&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;经过平滑处理的时间，变化更柔和&lt;/td&gt;&lt;td&gt;需要缓动效果的时间驱动动画&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;② Tiling And Offset 节点&lt;strong&gt;控制纹理的平铺次数和位置偏移&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;输入&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;UV&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;原始 UV 坐标（通常直接连 UV 节点）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Tiling&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;平铺次数，默认 (1,1)。比如 (2,2) 就是 2×2 重复&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Offset&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;偏移量，默认 (0,0)。比如 (0.5, 0) 让纹理横向移动一半&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;我们把材质运用上&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260603230657612.webp&quot; alt=&quot;image-20260603230657612&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到此时的泡沫就很真实了&lt;/p&gt;
&lt;p&gt;但是可以注意到边缘没有泡沫,这不符合逻辑&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605130856147.webp&quot; alt=&quot;image-20260605130856147&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里是因为子图的逻辑是用物体的遮挡背后的地面来渲染出来阴影也就是泡沫,但是没有物体遮挡的地方就没有影子,所以我们需要修改一下子图的节点&lt;/p&gt;
&lt;p&gt;我们之前的子图里的scene depth节点的左侧有一个默认的小节点default,&lt;/p&gt;
&lt;p&gt;这个等同于默认模式下(default)的屏幕位置节点(screen position),但是我们没有办法控制偏移量&lt;/p&gt;
&lt;p&gt;所以我们添加一个vector2类型的偏移量offset,默认值保持为0不变, 然后和default模式下的screen position节点相加,这样就可以控制了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605132202006.webp&quot; alt=&quot;image-20260605132202006&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们在为这个噪波效果添加偏移量&lt;/p&gt;
&lt;p&gt;我们添加一个浮点类型的depth sample offset的默认范围(0~0.1)的slider滑块,这个赋值之所以比较低是因为这个代表的是整个屏幕的比例,偏移量超过屏幕10%会显得很难看&lt;/p&gt;
&lt;p&gt;然后和噪声节点相乘并将输出值导入深度相交子节点为offset节点赋值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605133240281.webp&quot; alt=&quot;image-20260605133240281&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605133911352.webp&quot; alt=&quot;image-20260605133911352&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;此时我们已经可以看到这个在边缘有泡沫了,但是目前的效果看起来很别扭&lt;/p&gt;
&lt;p&gt;这是因为我们原先的是经过step节点将小于0的转换为0,大于1的转换为1,但是我们刚才增加的操作是在这个处理之前的,而水面以上的像素点深度交集为负值,导致这部分像素通过step时都会输出1产生泡沫&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605134135580.webp&quot; alt=&quot;image-20260605134135580&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以还需要改动&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605134844609.webp&quot; alt=&quot;image-20260605134844609&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们将divide的输出的负值值用negate取反乘以-1,然后接入另一个step节点来判断&lt;/p&gt;
&lt;p&gt;然后将噪声节点再接入这个step节点来判断,并将两个step节点的输出值相乘,并重新和泡沫颜色节点相乘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605141243812.webp&quot; alt=&quot;image-20260605141243812&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;现在看起来就自然多了,泡沫会随着波浪的滚动方向飘&lt;/p&gt;
&lt;p&gt;但是想必你也发现了,咱们的节点已经快变成蜘蛛网了,说明之前的操作必须要简化了,这里我们直接在devide和step节点之间添加一个absolute绝对值节点,顾名思义,就是我们初中学的那个化负为正的绝对值&lt;/p&gt;
&lt;p&gt;仔细思考一下,刚才绕一圈子是为了什么? 就是因为有负值的出现导致边缘出现了大面积的泡沫,我们之前的操作相当于:   一个盒子里有很多红色(非负值)和蓝色(负值)的小球,我们只要红色的,于是我们用筛子分别筛出两种小球,然后把蓝色的小球染成红色,然后再把两种颜色的小球倒在一起,但是我们其实可以直接把所有小球都直接染成红色,也就是对所有值取绝对值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605142021724.webp&quot; alt=&quot;image-20260605142021724&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样效果仍然是一样的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605143205430.webp&quot; alt=&quot;image-20260605143205430&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;物体边缘发光效果&quot;&gt;物体边缘发光效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#物体边缘发光效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个其实可以拓展为物体边缘的黑边或者白边这些效果,很多游戏都喜欢给角色或者物体添加一个描边&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605151423006.webp&quot; alt=&quot;image-20260605151423006&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;像之前那样添加材质和基础色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605154303634.webp&quot; alt=&quot;image-20260605154303634&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们首先添加UV节点,UV节点用于网格的每个顶点的坐标,用于定义材质纹理贴图的位置,在unity中默认立方体的UV映射使立方体的每个面都能完整显示纹理 ,&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;(0,1) ────── (1,1)
  ↑            ↑
  │            │
左边         右边
  │            │
(0,0) ────── (1,0)

UV的范围为: 
x: 0 → 1
y: 0 → 1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们需要检测在x或y方向上接近0的UV坐标,(也就是x轴对应的u轴,以及y轴对应的v轴),这里分为两步&lt;/p&gt;
&lt;p&gt;① 上半部分的smoothstep&lt;/p&gt;
&lt;p&gt;所以我们添加一个名为edge threshold 默认值为 0.1 范围为0-0.5 的slider的浮点类型的节点来控制,0表示无发光效果,0.5表示从物体两侧各覆盖一半的长度&lt;/p&gt;
&lt;p&gt;然后我们用Smoothstep 节点,将UV输入in插槽,将默认值为0的float节点和edge  threshold节点的值设置为上下限 即 &lt;strong&gt;smoothstep(0, edge, uv.x)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;UV节点输出的是四维向量(x,y,z,w),一般情况下只用x和y&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;从上方的 Smoothstep 节点的颜色可以看出检测的位置是左侧和底部的边缘,当UV值超过edge值的时候会输出为1,我们需要用One minus 节点来反转为0 ,因为原本的是左边下面黑,中间白,转换为左边下面白,中间黑&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260605221445722.webp&quot; alt=&quot;image-20260605221445722&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;这里我们只用x和y分量,我们用split节点将x和y分离,然后用add相加&lt;/p&gt;
&lt;p&gt;② 下半部分的smoothstep&lt;/p&gt;
&lt;p&gt;然后我们同样的用UV连接另一个Smoothstep节点 in输入口, 我们添加一个x值为1的float节点,然后让flaot和edge threshold节点用subtract节点相减,即 &lt;strong&gt;smoothstep(1-edge, 1, uv.x)&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此时内部为黑,右侧和上侧为白,不需要反色&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我这样解释可能更直观&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260606230919506.webp&quot; alt=&quot;image-20260606230919506&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里之所以要用split分离出来R和G 然后相加,是因为R和G通道输入分别输出的是红色和绿色,我们将二者相加变成1,那么其他区域就是0,也就是只剩下黑白色&lt;/p&gt;
&lt;h3 id=&quot;这里复习一下几个节点的作用&quot;&gt;这里复习一下几个节点的作用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这里复习一下几个节点的作用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;① Smoothstep 节点-----平滑&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Edge1&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;下限阈值（较小值）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Edge2&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;上限阈值（较大值）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;In&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前输入值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;输出规则&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;In ≤ Edge1    →  输出 0
In ≥ Edge2    →  输出 1
Edge1 &amp;#x3C; In &amp;#x3C; Edge2  →  输出 0~1 之间的平滑过渡值
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;直观理解&lt;/p&gt;
&lt;p&gt;想象一个&lt;strong&gt;渐变条&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;0                    0.5                    1
|←──── 黑色 ────→|←──── 灰色过渡 ────→|←──── 白色 ────→|
      Edge1                          Edge2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Edge1 左边&lt;/strong&gt;：纯黑（0）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge2 右边&lt;/strong&gt;：纯白（1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中间&lt;/strong&gt;：平滑的灰度过渡（S 形曲线，不是直线）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;② One minus ------反向&lt;/p&gt;
&lt;p&gt;Unity 的 &lt;strong&gt;One Minus&lt;/strong&gt; 节点就是&lt;strong&gt;1 减去输入值&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输出 = 1 - 输入
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;In&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输入值（0~1 范围）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Out&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;1 - In&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;没有 Edge，没有阈值，就是简单的&lt;strong&gt;反向&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;直观理解&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输入 0  →  输出 1    (全黑变全白)
输入 0.5 →  输出 0.5  (中间不变)
输入 1  →  输出 0    (全白变全黑)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;常见用法&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;场景&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;反相颜色&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;白变黑，黑变白&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;反向遮罩&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;原来显示的地方隐藏，隐藏的地方显示&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;补数运算&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;配合其他节点做 &lt;code&gt;1-x&lt;/code&gt; 的数学操作&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;反向透明度&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;不透明变透明&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;③ Subtract  ------相减&lt;/p&gt;
&lt;p&gt;Unity 的 &lt;strong&gt;Subtract 节点&lt;/strong&gt; 是 Shader Graph（着色器图）中的一个数学运算节点，用于执行&lt;strong&gt;减法运算&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;属性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输入 A&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;被减数（Minuend）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输入 B&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;减数（Subtrahend）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输出&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A - B 的结果&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;④ Saturate -----限制范围(0-1)&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;属性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输入&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;任意数值（标量或向量）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输出&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;将输入值&lt;strong&gt;钳制到 [0, 1] 范围&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;数学表达：&lt;code&gt;output = clamp(input, 0, 1)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;即：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小于 0 的值 → 变为 0&lt;/li&gt;
&lt;li&gt;大于 1 的值 → 变为 1&lt;/li&gt;
&lt;li&gt;0 ~ 1 之间的值 → 保持不变&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后我们将左下角和右上角的值相加,因为角落会出现像素的总和大于一(这里我们打个比方,比如我们将两张纸条叠在一块,那么他们重叠的区域的纸条厚度一定大于一张纸条),为了避免交叉处的亮度和其他位置不一致,所以我们需要用saturate节点来限制值在(0,1)范围&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607220728288.webp&quot; alt=&quot;image-20260607220728288&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们需要控制边框的颜色,这里添加一个Glowcolor颜色节点,设置为HDR,然后我们先用add节点预留一个接口,然后和glowcolor节点相乘并与基础色和纹理相加&lt;/p&gt;
&lt;p&gt;然后将这个材质附加到物体上&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607222811601.webp&quot; alt=&quot;image-20260607222811601&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们调整edge threshold的值就可以看到发光效果了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607223008473.webp&quot; alt=&quot;image-20260607223008473&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;刚才我们并没有添加与地面交叉的效果&lt;/p&gt;
&lt;p&gt;这里我们复用之前的负责交叉逻辑的子图,用one minus取反(因为原本的是黑色阴影,这里变成白色),然后用saturate节点避免低于0的交集值,为了控制强度依旧添加power节点并连接浮点类型默认值为1 范围0.01-25的slider值 intersection power&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607223823399.webp&quot; alt=&quot;image-20260607223823399&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后还记得吗,这个交叉效果必须是透明材质,否则无法显示出来&lt;/p&gt;
&lt;p&gt;而且要注意的是这个效果只对不透明物体有效,对透明物体无效&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607232149771.webp&quot; alt=&quot;image-20260607232149771&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;例如对普通不透明平面是这样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607232501774.webp&quot; alt=&quot;image-20260607232501774&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对透明水体是这样,此时水体和箱子都无法互相检测,因为都是透明材质&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%9C%BA%E6%99%AF%E7%9B%B8%E4%BA%A4%E6%A3%80%E6%B5%8B/image-20260607232615468.webp&quot; alt=&quot;image-20260607232615468&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>UnityShaderGraph---自定义光照</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-zi-ding-yi-guang-zhao/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-zi-ding-yi-guang-zhao/</guid><description>本篇来学习自定义光照</description><pubDate>Sat, 30 May 2026 10:20:50 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天我们来学习unity中的自定义光照&quot;&gt;今天我们来学习unity中的自定义光照&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天我们来学习unity中的自定义光照&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;unity-中的菲涅尔效应&quot;&gt;Unity 中的菲涅尔效应&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#unity-中的菲涅尔效应&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;核心原理&lt;/p&gt;
&lt;p&gt;菲涅尔效应描述的是：&lt;strong&gt;物体表面的反射率随观察角度变化&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;正对观察&lt;/strong&gt;（视线与法线夹角小）→ 反射弱，漫反射/折射强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;掠射观察&lt;/strong&gt;（视线与法线夹角大，接近平行表面）→ 反射强&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;典型例子：看一池水，垂直往下看能看到水底；远处水面像镜子一样反射天空。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在 Unity 中的实现方式&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;方式&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;菲涅尔方程（物理准确）&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;基于折射率计算，用于 PBR（基于物理的渲染）材质&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Schlick 近似&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;最常用的简化公式：&lt;code&gt;F = F0 + (1 - F0) * (1 - cosθ)^5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;内置 Shader&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Standard/URP/HDRP 的金属度/光滑度工作流程已自动包含&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;实际应用场景&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;边缘光（Rim Light）&lt;/strong&gt;：角色轮廓发光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;玻璃/水面&lt;/strong&gt;：边缘反射更强&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全息/护盾效果&lt;/strong&gt;：视角相关的透明度变化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;卡通渲染&lt;/strong&gt;：描边或边缘染色&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简而言之就是物体在你观察时变得更易反射的原理&lt;/p&gt;
&lt;p&gt;我们有的时候从unity商店下载的资源会显示不出来,这个是因为渲染管不适配导致的,有的材质之前是用Built in渲染管,而我们使用的是URP渲染管&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530110534831.webp&quot; alt=&quot;image-20260530110534831&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们只需要选中这个material然后改成URP渲染即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530110731455.webp&quot; alt=&quot;image-20260530110731455&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530111131209.webp&quot; alt=&quot;image-20260530111131209&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样就可以使用我们的材质了&lt;/p&gt;
&lt;p&gt;事实上shadergraph已经内置了菲涅尔反射的支持&lt;/p&gt;
&lt;p&gt;比如我们将光滑度smoothness改成0,此时的材质就是一张不反光的普通贴图&lt;/p&gt;
&lt;p&gt;但是如果我们将其数值调大就可以看到明显的反光&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530111418053.webp&quot; alt=&quot;image-20260530111418053&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530111536410.webp&quot; alt=&quot;image-20260530111536410&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以自己创建一个material&lt;/p&gt;
&lt;p&gt;首先像之前那样创建基础色和基础纹理,选择无光照unlit着色器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530112826361.webp&quot; alt=&quot;image-20260530112826361&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后创建菲涅尔节点和浮点类型的Fresnelpower节点控制fresnel的强度&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530112917414.webp&quot; alt=&quot;image-20260530112917414&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;强度默认为1 改为slider滑块,范围0~20&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530113027407.webp&quot; alt=&quot;image-20260530113027407&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;然后用FresnelColor控制颜色,使用HDR&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530113202944.webp&quot; alt=&quot;image-20260530113202944&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530112746177.webp&quot; alt=&quot;image-20260530112746177&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们改动强度值就可以看到这个材质的反光了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260530113537246.webp&quot; alt=&quot;image-20260530113537246&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;漫反射光&quot;&gt;漫反射光&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#漫反射光&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531104133890.webp&quot; alt=&quot;image-20260531104133890&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;我们可以知道漫反射就是法向量夹角成反比&lt;/p&gt;
&lt;p&gt;漫反射的光简化为 n · l&lt;/p&gt;
&lt;p&gt;随着角度的增大,随着角度的增大,点积逐渐减少&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531104451185.webp&quot; alt=&quot;image-20260531104451185&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;核心公式&lt;/p&gt;
&lt;p&gt;漫反射光照强度 ∝ &lt;strong&gt;n · l&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;n&lt;/strong&gt; = 表面法向量（垂直于表面的单位向量）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;l&lt;/strong&gt; = 指向光源的单位向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;·&lt;/strong&gt; = 点积（dot product）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;点积的几何定义是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;n&lt;/strong&gt;⋅&lt;strong&gt;l&lt;/strong&gt;=∣&lt;strong&gt;n&lt;/strong&gt;∣∣&lt;strong&gt;l&lt;/strong&gt;∣cos&lt;em&gt;θ&lt;/em&gt;=cos&lt;em&gt;θ&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;（因为都是单位向量，长度为1）&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;夹角 θ&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;cosθ&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;漫反射强度&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0°（正对光源）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;最强&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;30°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.87&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;较强&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;45°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.71&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;中等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;60°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.50&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;较弱&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;90°（切线方向）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;无光&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&gt;90°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;负值&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0（背面无光照）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;直观理解&lt;/p&gt;
&lt;p&gt;想象一束光照射到地面：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;正午（太阳在头顶）&lt;/strong&gt;：光线垂直地面，单位面积接收的光最多 → &lt;strong&gt;最亮&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;傍晚（太阳斜射）&lt;/strong&gt;：同样的光束&quot;铺开&quot;在更大的面积上，单位面积能量减少 → &lt;strong&gt;变暗&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是&quot;&lt;strong&gt;与法向量夹角成反比&lt;/strong&gt;&quot;的本质——夹角越大，有效光照面积越大，单位面积能量越分散，所以看起来越暗。&lt;/p&gt;
&lt;p&gt;我们像之前那样创建颜色和纹理节点&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531105626713.webp&quot; alt=&quot;image-20260531105626713&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;实现卡通渲染效果&quot;&gt;实现卡通渲染效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#实现卡通渲染效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后我们实现光源的计算, 这里需要介绍几个节点&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Main Light Direction&lt;/strong&gt; 是 Unity Shader Graph 中的一个内置节点（Shader Graph 13+ / Unity 2022+ 引入），用于获取场景中**主方向光（Main Directional Light）**的方向&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;属性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输出&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Direction (Vector3) — 世界空间中主方向光的归一化方向&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;主光源定义&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;投射阴影的方向光；如果没有，则回退到第一个不投射阴影的方向光&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;关键注意点：方向是&lt;strong&gt;反的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是最容易踩坑的地方。Unity 官方讨论中确认：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Main Light Direction&lt;/code&gt; 节点输出的方向是 &lt;strong&gt;从光源指向表面&lt;/strong&gt; 的向量（即 &lt;code&gt;GetMainLight().direction&lt;/code&gt; 被取反了）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;但在光照计算中，我们需要的是 &lt;strong&gt;从表面指向光源&lt;/strong&gt; 的向量（即 &lt;code&gt;l&lt;/code&gt;），所以：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;实际光照方向 l = -MainLightDirection
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个节点经典用法就是这样&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;[Main Light Direction] → [Negate] ───┐
                                    						   ├──→ [Dot Product]
[Normal Vector] (World)  ─────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而其他的几个就是&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Main Light Direction&lt;/strong&gt; 获取光源方向&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Negate&lt;/strong&gt; 取反，得到从表面指向光源的向量 &lt;code&gt;l&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Normal Vector&lt;/strong&gt;（世界空间）获取表面法线 &lt;code&gt;n&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dot Product&lt;/strong&gt; 计算 &lt;code&gt;n · l&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里简单说一下&lt;/p&gt;
&lt;h3 id=&quot;1-normal-vector世界空间&quot;&gt;1. [Normal Vector]（世界空间）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-normal-vector世界空间&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;属性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输入&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;无（自动从模型顶点法线获取）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输出&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;Vector3&lt;/code&gt; — 世界空间中的表面法线 &lt;code&gt;n&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;作用&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;告诉你&quot;表面朝哪个方向&quot;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;法线是什么？&lt;/strong&gt; 想象一个球体，每个点的法线就是从球心指向该点的方向。平面的话，法线就是垂直于平面的向量。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：必须选择 &lt;strong&gt;World&lt;/strong&gt; 空间（而非 Object/Tangent），因为光照方向也是在世界空间中定义的，两者要在同一坐标系下才能做点积。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-main-light-direction&quot;&gt;2. [Main Light Direction]&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-main-light-direction&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;属性&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;输出&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;Vector3&lt;/code&gt; — 主方向光的归一化方向&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;方向含义&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;从光源指向表面&lt;/strong&gt;（光传播的方向）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;如果太阳在上方，输出大概是 (0, -1, 0)
            ↑ 太阳
            │
            ↓ 光往下走
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-negate取反&quot;&gt;3. [Negate]（取反）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-negate取反&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;输出&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;(x, y, z)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;(-x, -y, -z)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;为什么要取反？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为光照公式 &lt;code&gt;n · l&lt;/code&gt; 中的 &lt;code&gt;l&lt;/code&gt; 必须是 &lt;strong&gt;从表面指向光源&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Main Light Direction:  光源 ──→ 表面   = (0, -1, 0)
Negate 后:            表面 ──→ 光源   = (0, 1, 0)  ← 这才是 l
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-dot-product点积&quot;&gt;4. [Dot Product]（点积）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-dot-product点积&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这是核心运算。数学上：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;n&lt;/strong&gt;⋅&lt;strong&gt;l&lt;/strong&gt;=∣&lt;em&gt;n&lt;/em&gt;∣∣&lt;em&gt;l&lt;/em&gt;∣cos&lt;em&gt;θ&lt;/em&gt;=cos&lt;em&gt;θ&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;（因为都是单位向量，长度为1）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;它把&quot;角度关系&quot;转换成&quot;亮度数值&quot;：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;夹角 θ&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;点积结果&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0°（正对光源）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1.0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;最亮&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;45°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.707&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;较亮&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;60°&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;中等&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;90°（切线）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;无光&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;120°（背面）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;理论上负值，但光照不能为负&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;为了满足这个&lt;strong&gt;n&lt;/strong&gt;⋅&lt;strong&gt;l&lt;/strong&gt;=∣&lt;strong&gt;n&lt;/strong&gt;∣∣&lt;strong&gt;l&lt;/strong&gt;∣ 我们需要这些节点&lt;/p&gt;
&lt;p&gt;main light direction表示从光源到物体的方向,所以用negate节点取反获得从物体表面到光源的方向,接着计算nagate输出的反向向量与normal vector输出的法线向量的点积&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531105932981.webp&quot; alt=&quot;image-20260531105932981&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;以上我们已经完成了光照的计算,有两种实现方式来实现渲染&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531113646090.webp&quot; alt=&quot;image-20260531113646090&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图,我们有两个节点,分别为step节点和smoothstep节点,由图像你就可以很清楚的看出二者的区别&lt;/p&gt;
&lt;h2 id=&quot;step-节点&quot;&gt;Step 节点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#step-节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;功能&quot;&gt;功能&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;硬阈值切换&lt;/strong&gt; — 输入大于阈值输出1，小于等于阈值输出0。&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Step(Edge, In) = In &gt; Edge ? 1 : 0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入 In&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Edge=0.5&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;结果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;0&lt;/strong&gt;（或1，取决于实现，通常是0）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.8&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;图形表示&quot;&gt;图形表示&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#图形表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输出
 1 │      ┌────────
 0 │──────┘
   └────┬────┬────→ 输入
       0.5（Edge）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;完全硬边，没有过渡。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;典型用法&quot;&gt;典型用法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#典型用法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;制作&lt;strong&gt;硬边遮罩&lt;/strong&gt;（如卡通渲染的明暗分界）&lt;/li&gt;
&lt;li&gt;将连续的灰度图转成&lt;strong&gt;纯黑白&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;smoothstep-节点&quot;&gt;Smoothstep 节点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#smoothstep-节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;功能-1&quot;&gt;功能&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#功能-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;平滑阈值过渡&lt;/strong&gt; — 在 Edge1 和 Edge2 之间做&lt;strong&gt;平滑的 Hermite 插值&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Smoothstep(Edge1, Edge2, In):
    如果 In ≤ Edge1:  输出 0
    如果 In ≥ Edge2:  输出 1
    如果 Edge1 &amp;#x3C; In &amp;#x3C; Edge2: 输出平滑的 0→1 曲线
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;图形表示-1&quot;&gt;图形表示&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#图形表示-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输出
 1 │           ┌──────
   │        ╱
 0 │──────╱
   └────┬────┬────→ 输入
      Edge1 Edge2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;有过渡带，边缘柔和&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;和-step-的对比&quot;&gt;和 Step 的对比&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#和-step-的对比&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Step&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;Smoothstep&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;参数&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1个阈值 (Edge)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;2个阈值 (Edge1, Edge2)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;过渡&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;硬切，无过渡&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;平滑曲线过渡&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;用途&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;硬边、二值化&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;软边、抗锯齿、柔和遮罩&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这两个最明显的区别就是step当in输入值小于edge阈值的时候节点输出0,0是黑色,1是白色,我们可以通过控制阈值实现,不过这个明暗过度非常生硬&lt;/p&gt;
&lt;p&gt;所以smoothstep可以实现平滑过渡,这个函数具有缓冲区域输出值在此区间内会从0平滑过渡到1,所以这个拥有两个边界值,&lt;/p&gt;
&lt;p&gt;当 in输入值&amp;#x3C; edge1输出为0 ,&lt;/p&gt;
&lt;p&gt;当in输入值 &gt; edge2输出为1,&lt;/p&gt;
&lt;p&gt;如果in输入值位于 edge1和edge2之间,那么输出将会是介于0~1之间的某个值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531133019055.webp&quot; alt=&quot;image-20260531133019055&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们添加一个vector2的值cutoff thresholds用split分割出x和y来控制两个阈值,分别设置为-0.05和0&lt;/p&gt;
&lt;p&gt;不过为了更直观添加一个ambient light strength的浮点节点来控制环境光强度,我们将其设置为(0~1)的slider滑块&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lerp&lt;/strong&gt;（Linear Interpolation，线性插值）是 Shader Graph 中&lt;strong&gt;最常用、最核心的混合节点&lt;/strong&gt;，它的作用很简单：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;在两个值之间，按一个百分比取中间值。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;数学公式&lt;/p&gt;
&lt;p&gt;Lerp(&lt;em&gt;A&lt;/em&gt;,&lt;em&gt;B&lt;/em&gt;,&lt;em&gt;T&lt;/em&gt;)=&lt;em&gt;A&lt;/em&gt;+(&lt;em&gt;B&lt;/em&gt;−&lt;em&gt;A&lt;/em&gt;)×&lt;em&gt;T&lt;/em&gt;=&lt;em&gt;A&lt;/em&gt;×(1−&lt;em&gt;T&lt;/em&gt;)+&lt;em&gt;B&lt;/em&gt;×&lt;em&gt;T&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;参数&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;起始值（T=0 时的结果）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;目标值（T=1 时的结果）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;混合因子（0~1），也叫&quot;权重&quot;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;直观理解&quot;&gt;直观理解&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#直观理解&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;想象一条从 A 到 B 的线段，T 就是你走到的位置：&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20261005213229384.webp&quot; alt=&quot;image-20261005213229384&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后将我们smoothstep的输出值放入T槽,将ambient light strength值放入A槽,B槽保持默认的1,这样我们只需要改动A槽就可以了&lt;/p&gt;
&lt;p&gt;我们将这个材质添加到物体上,但是你可以看到阴影面黑的离谱,这个只需要调整环境光强度即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531141511789.webp&quot; alt=&quot;image-20260531141511789&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样就正常多了,这个可以自己调整x y 还有光照强度尝试一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E8%87%AA%E5%AE%9A%E4%B9%89%E5%85%89%E7%85%A7/image-20260531141623711.webp&quot; alt=&quot;image-20260531141623711&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>UnityShaderGraph---光照基础</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-guang-zhao-ji-chu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-guang-zhao-ji-chu/</guid><description>本篇学习unity中的光照基础和贴图</description><pubDate>Fri, 29 May 2026 13:58:47 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇来了解一下unity中的光照&quot;&gt;本篇来了解一下unity中的光照&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇来了解一下unity中的光照&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;光照分为漫反射光和全反射光&lt;/p&gt;
&lt;p&gt;场景光源主要分为两类:手动添加的实际光源平行光或点光源还有环境光照,后者包括物体间的的间接光反射和天空盒光照&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529140930779.webp&quot; alt=&quot;image-20260529140930779&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们选择光照渲染 lit shader graph&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unity 的 &lt;strong&gt;Lit Shader&lt;/strong&gt;（光照着色器）是 URP（Universal Render Pipeline，通用渲染管线）和 HDRP（High Definition Render Pipeline，高清渲染管线）中的核心光照材质系统。它定义了物体表面如何与光源交互，决定了渲染的真实感程度&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529141058068.webp&quot; alt=&quot;image-20260529141058068&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Unity的Lit着色器采用PBR(Physically Based Rendering,基于物理的渲染)技术,简称为PBR(基于物理渲染),其核心是向Unity描述物体的物理特性&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Base Color (3) — 基础颜色&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Vector3（RGB）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：物体表面的固有色（Albedo）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键细节&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;对于&lt;strong&gt;非金属&lt;/strong&gt;（Metallic = 0），这就是你看到的颜色，比如红色塑料、绿色草地&lt;/li&gt;
&lt;li&gt;对于&lt;strong&gt;纯金属&lt;/strong&gt;（Metallic = 1），Base Color 应接近黑色或深灰色，因为金属的&quot;颜色&quot;实际上来自反射，而非漫反射&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常见错误&lt;/strong&gt;：把金属材质做成鲜艳的 Base Color，会导致能量不守恒，看起来&quot;假&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Normal (Tangent Space) (3) — 法线（切线空间）&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Vector3（RGB）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：定义表面微观朝向，模拟凹凸细节而不增加多边形&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;为什么是 Tangent Space？&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;切线空间法线贴图以每个像素自身的表面为参考，模型旋转/变形时法线方向依然正确&lt;/li&gt;
&lt;li&gt;与之对应的是 Object Space（物体空间），较少使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RGB 通道对应&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;R（红）= 切线方向左右偏移&lt;/li&gt;
&lt;li&gt;G（绿）= 副切线方向上下偏移&lt;/li&gt;
&lt;li&gt;B（蓝）= 法线方向（通常接近 1，表示朝外）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：Unity 默认使用 OpenGL 标准（Y+ 向上），如果法线贴图看起来&quot;凹凸反了&quot;，可能需要翻转绿通道&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Metallic (1) — 金属度&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Float（0~1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：区分材质是金属还是非金属&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;取值规则&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt;：绝缘体 — 塑料、石头、木头、混凝土、泥土等。只有漫反射，无金属反射&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt;：导体 — 铁、铜、金、铝等。几乎没有漫反射，反射率高且带颜色&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0~1 之间&lt;/strong&gt;：过渡值，实际物理世界中很少有&quot;半金属&quot;，通常用 0 或 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图中数值 0&lt;/strong&gt;：表示这是一个非金属材质&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Smoothness (1) — 光滑度&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Float（0~1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：控制表面的光滑/粗糙程度，直接决定高光的锐利度和反射的清晰度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;取值效果&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1&lt;/strong&gt;：镜面般光滑，反射清晰（镜子、抛光金属、水面）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0&lt;/strong&gt;：完全粗糙，反射模糊，无清晰高光（磨砂混凝土、天鹅绒）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图中数值 0.5&lt;/strong&gt;：中等光滑度，有可见但不锐利的高光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与 Roughness 的关系&lt;/strong&gt;：Smoothness = 1 - Roughness（Unreal 使用 Roughness，Unity 使用 Smoothness）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Emission (3) — 自发光&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Vector3（RGB），支持 HDR&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：材质自身发出的光，不受场景光照影响&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特性&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;只有颜色值，不直接照亮周围物体（除非开启全局光照烘焙或实时光照）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HDR（高动态范围）&lt;/strong&gt;：允许值超过 1（如 2、5、10），产生泛光（Bloom）效果&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;常见用途&lt;/strong&gt;：霓虹灯、屏幕、魔法特效、炽热金属、生物发光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图中是黑色（HDR）&lt;/strong&gt;：表示当前不自发光&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;Ambient Occlusion (1) — 环境光遮蔽&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;类型&lt;/strong&gt;：Float（0~1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;含义&lt;/strong&gt;：模拟光线难以到达的缝隙、角落、褶皱处的阴影&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1（白色）&lt;/strong&gt;：无遮蔽，完全接收环境光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;0（黑色）&lt;/strong&gt;：完全遮蔽，环境光被完全阻挡&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;作用域&lt;/strong&gt;：AO 只影响&lt;strong&gt;间接光照&lt;/strong&gt;（环境光、反射探针），不影响直接光源（太阳光、点光源）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图中数值 1&lt;/strong&gt;：表示无额外遮蔽，使用默认环境光接收&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;unity会自动计算物体表面的漫反射和镜面反射强度,base color输出代表物体的反照率颜色(即表面基础反射色),其运行机制与无光照unlit 着色器中的表现完全一致&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529142652203.webp&quot; alt=&quot;image-20260529142652203&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们了解一下这个黑白贴图的类型&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;存储内容&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Metallic Map（金属度贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=非金属，白=金属&lt;/td&gt;&lt;td&gt;控制 Metallic 参数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Smoothness Map（光滑度贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=粗糙，白=光滑&lt;/td&gt;&lt;td&gt;控制 Smoothness 参数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Roughness Map（粗糙度贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=光滑，白=粗糙&lt;/td&gt;&lt;td&gt;Unreal 等引擎使用，Unity 需反转&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Ambient Occlusion Map（AO 贴图 / 环境光遮蔽贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=遮蔽，白=无遮蔽&lt;/td&gt;&lt;td&gt;控制 Ambient Occlusion&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Opacity Map（不透明度贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=透明，白=不透明&lt;/td&gt;&lt;td&gt;控制 Alpha 裁剪或透明度&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Height Map（高度贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;黑=低，白=高&lt;/td&gt;&lt;td&gt;用于 Parallax（视差）或 Displacement（置换）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Mask Map（遮罩贴图）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;通道分别存不同数据&lt;/td&gt;&lt;td&gt;HDRP 常用，RGBA 各存 Metallic、AO、Detail Mask、Smoothness&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;高度贴图&quot;&gt;高度贴图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#高度贴图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后添加纹理节点并添加纹理&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529143029430.webp&quot; alt=&quot;image-20260529143029430&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过这个只是在视觉效果上改变,不会改变实际的模型&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529143527553.webp&quot; alt=&quot;image-20260529143527553&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后再添加一个HeightMap Texture的纹理节点,然后再和Parallax mapping(视差贴图)节点相连,这个节点会结合高度图和特定算法参数来动态调整基底贴图的UV坐标,然后通过高度图和特定算法参数动态调整UV坐标&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529144214106.webp&quot; alt=&quot;image-20260529144214106&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;左侧输入参数&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;参数&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;类型&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Heightmap&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Texture2D&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;高度图贴图，灰度图，白=高，黑=低&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Heightmap Sampler&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Sampler State&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;高度图的采样器状态，控制过滤/寻址模式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Amplitude&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Float&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;深度强度，值越大凹凸越明显，通常 0~0.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;UV&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Vector2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;原始 UV 坐标，输入基础纹理坐标&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Heightmap Sample Channel&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Vector4 / 下拉选项&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;指定从高度图的哪个通道读取高度值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;右侧输出&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;














&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;参数&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;类型&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Parallax UVs&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Vector2&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;偏移后的 UV 坐标，用于后续所有贴图采样&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;关键参数详解:&lt;/p&gt;
&lt;p&gt;Heightmap Sample Channel&lt;/p&gt;
&lt;p&gt;高度图可能是单通道灰度（R=G=B），也可能是把高度存在某个特定通道的 RGBA 贴图里。这个参数告诉节点&lt;strong&gt;读哪个通道&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;通道选择&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;对应值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;R&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(1, 0, 0, 0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;G&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(0, 1, 0, 0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;B&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(0, 0, 1, 0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;A&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(0, 0, 0, 1)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;法线贴图&quot;&gt;法线贴图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#法线贴图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529144747813.webp&quot; alt=&quot;image-20260529144747813&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;法线贴图的效果看起来和位移贴图差不多,不过存在很多区别:&lt;/p&gt;
&lt;p&gt;① 位移贴图通过模拟在Z轴上的位移来制造深度假象&lt;/p&gt;
&lt;p&gt;② 法线贴图是改变每个像素的表面法线方向,相当于告诉渲染引擎这个像素的实际朝向与模型几何表面不一致&lt;/p&gt;
&lt;p&gt;法线贴图和位移贴图配合使用可以产生逼真的渲染效果&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529145549890.webp&quot; alt=&quot;image-20260529145549890&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们添加一个叫做normal texture的2d纹理并选择normalmap模式&lt;/p&gt;
&lt;p&gt;此时我们可以看到这个变成了一种淡淡的紫色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529145951892.webp&quot; alt=&quot;image-20260529145951892&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们把之间用位移贴图处理过的UV贴图坐标和这个sample texture2d的UV相连,并将type类型设置为normal  法线贴图,并将输出结果连到法线图的主输出端口Normal (Tangent Space)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529150418455.webp&quot; alt=&quot;image-20260529150418455&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以了解一下这个workflow mode工作流模式&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;Metallic（金属度）&lt;/strong&gt;&lt;/th&gt;&lt;th&gt;&lt;strong&gt;Specular（高光）&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;核心思路&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&quot;这材质含多少金属？&quot;&lt;/td&gt;&lt;td&gt;&quot;这材质反射什么颜色？&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;输入参数&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Base Color + Metallic + Smoothness&lt;/td&gt;&lt;td&gt;Diffuse + Specular + Smoothness&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Base Color 含义&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;非金属的固有色 / 金属的反射色调&lt;/td&gt;&lt;td&gt;仅漫反射颜色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;金属反射色&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;由 Base Color × Metallic 自动推导&lt;/td&gt;&lt;td&gt;由 Specular 贴图直接指定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;物理正确性&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;强制遵守：金属无漫反射，非金属反射弱&lt;/td&gt;&lt;td&gt;容易设置错误（如非金属给强反射）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;贴图数量&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;少（Metallic 存 R 或 Alpha）&lt;/td&gt;&lt;td&gt;多（Specular 需 RGB 颜色）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;直观程度&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;更符合直觉&lt;/td&gt;&lt;td&gt;美术师传统习惯&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;主流程度&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;现代 PBR 标准，强烈推荐&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;兼容旧项目/传统管线&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529150815803.webp&quot; alt=&quot;image-20260529150815803&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;高光模式允许直接调节反射高光的色彩属性&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529151257776.webp&quot; alt=&quot;image-20260529151257776&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;我们添加一个浮点类型的metallic并设置为滑块模式(这个是在inspector窗口调节的)&lt;/p&gt;
&lt;h2 id=&quot;粗糙度贴图&quot;&gt;粗糙度贴图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#粗糙度贴图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529151459189.webp&quot; alt=&quot;image-20260529151459189&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529151707087.webp&quot; alt=&quot;image-20260529151707087&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;粗糙度贴图中黑色表示表面极度光滑,白色表示材质表面极度粗糙,不过unity中白色表示完美平滑&lt;/p&gt;
&lt;p&gt;为了消除这个差异我们需要反转&lt;/p&gt;
&lt;p&gt;我们需要添加一个Roughness texture节点,并选择红色通道输出,因为这是单通道灰度贴图,可以随便选择一个通道,不限于红色通道 R&lt;/p&gt;
&lt;p&gt;然后连接反转节点 one minus进行黑白颜色反转,然后将处理后的值连接到smoothness平滑度通道&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529152220226.webp&quot; alt=&quot;image-20260529152220226&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One Minus&lt;/strong&gt; 节点就是数学上的 &lt;strong&gt;1 - x&lt;/strong&gt;，对每个通道单独做减法。&lt;/p&gt;
&lt;p&gt;功能&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;输出 = 1 - 输入
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;输出&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.25&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.75&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;0.75&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0.25&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;1&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;本质上就是&lt;strong&gt;反转数值&lt;/strong&gt;——黑的变白，白的变黑，中间灰互相颠倒&lt;/p&gt;
&lt;p&gt;虽然我们得到的材质跟十几年的老游戏画质一样,不过问题不大&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529162230985.webp&quot; alt=&quot;image-20260529162230985&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;自发光贴图&quot;&gt;自发光贴图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#自发光贴图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;现在我们需要添加自发光颜色属性&lt;/p&gt;
&lt;p&gt;先添加一个颜色节点,然后将模式设置为HDR&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529162646727.webp&quot; alt=&quot;image-20260529162646727&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后就可以使用超高强度的颜色值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529162857707.webp&quot; alt=&quot;image-20260529162857707&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529163251814.webp&quot; alt=&quot;image-20260529163251814&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到小球发光了,但是由于这个是我们在创建URP项目的时候自动添加的功能-----global volume&lt;/p&gt;
&lt;p&gt;如果没有的话可以点击这里添加&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529163441757.webp&quot; alt=&quot;image-20260529163441757&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;就是这个东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529163841707.webp&quot; alt=&quot;image-20260529163841707&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unity 的 &lt;strong&gt;Global Volume（全局体积）&lt;/strong&gt; 是 URP/HDRP 中用于控制&lt;strong&gt;后处理效果（Post-processing）&lt;strong&gt;和&lt;/strong&gt;视觉环境设置&lt;/strong&gt;的核心系统。它不同于 Local Volume（局部体积，只在特定区域生效），Global Volume 一旦激活就&lt;strong&gt;影响整个场景&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;核心概念&quot;&gt;核心概念&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#核心概念&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Volume 系统基于&lt;strong&gt;层叠覆盖&lt;/strong&gt;机制：&lt;/p&gt;
&lt;p&gt;plain&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;plain&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-plain&quot;&gt;Global Volume（全局）→ 始终生效，作为基础
Local Volume（局部） → 进入触发区域后，按优先级覆盖或混合
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;多个 Volume 可以同时存在，通过 &lt;strong&gt;Priority（优先级）&lt;/strong&gt; 和 &lt;strong&gt;Blend Distance（混合距离）&lt;/strong&gt; 决定谁说了算。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;global-volume-的关键组件&quot;&gt;Global Volume 的关键组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#global-volume-的关键组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-volume-组件本身&quot;&gt;1. Volume 组件本身&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-volume-组件本身&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;参数&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Is Global&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;勾选 = 全局生效，不依赖碰撞体范围&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Priority&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;优先级，数值大的覆盖数值小的&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Blend Distance&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;与局部体积混合时的过渡距离（全局通常 irrelevant）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Weight&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;整体权重 0~1，用于淡入淡出整个 Volume 效果&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Profile&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;挂载的 Volume Profile 资产，存实际效果数据&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;2-volume-profile配置文件&quot;&gt;2. Volume Profile（配置文件）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-volume-profile配置文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这是一个独立的 &lt;code&gt;.asset&lt;/code&gt; 文件，里面可以添加多种 &lt;strong&gt;Override（覆盖）&lt;/strong&gt; 效果。同一个 Profile 可以被多个 Volume 复用。&lt;/p&gt;
&lt;h2 id=&quot;常见-override-效果urp&quot;&gt;常见 Override 效果（URP）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#常见-override-效果urp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;





































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;效果&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;常用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Bloom&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;泛光，亮部溢出&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;霓虹灯、强光、梦幻氛围&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tonemapping&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;色调映射，压缩 HDR 到 LDR&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;几乎所有场景，防止过曝&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Color Adjustments&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;曝光、对比度、饱和度、色温&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;整体调色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;White Balance&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;白平衡偏移&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;修正色温，冷暖调&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Lift Gamma Gain&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;暗部/中间调/亮部分开调色&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;电影级调色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Shadows Midtones Highlights&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;阴影/中间调/高光独立控制&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;精细调色&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Vignette&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;暗角&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;聚焦中心、复古感&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Chromatic Aberration&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;色差，边缘 RGB 分离&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;镜头畸变、风格化&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Depth of Field&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;景深&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;特写虚化、引导视线&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Motion Blur&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;运动模糊&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;高速运动、镜头感&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Film Grain&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;胶片颗粒&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;复古、电影质感&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Panini Projection&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;透视校正&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;宽屏镜头畸变修正&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;hdrp-特有的高级效果&quot;&gt;HDRP 特有的高级效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#hdrp-特有的高级效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;效果&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Ambient Occlusion&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;屏幕空间环境光遮蔽&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Screen Space Reflection&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;屏幕空间反射&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Volumetric Fog&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;体积雾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Volumetric Lighting&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;体积光（上帝光）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Exposure&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;自动曝光、眼适应&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Indirect Lighting Controller&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;间接光强度控制&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;相比你也看到了inspector里面有很多属性,比如Bloom,Vignette什么的&lt;/p&gt;
&lt;p&gt;每个volume都是单个profile文件配置的,例如我们现在使用的就是这个默认的SamepleSceneProfile&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529164616056.webp&quot; alt=&quot;image-20260529164616056&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然我们还可以选择自己创建一个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529164724268.webp&quot; alt=&quot;image-20260529164724268&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以在这里找到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529171245332.webp&quot; alt=&quot;image-20260529171245332&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;创建完了之后并使用发现没有任何属性,小球也不发光了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529164821902.webp&quot; alt=&quot;image-20260529164821902&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以通过add override添加子属性&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529165011991.webp&quot; alt=&quot;image-20260529165011991&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以调节强度大小intensity,默认为0 不发光,数值越高发光越亮&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529165250048.webp&quot; alt=&quot;image-20260529165250048&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529165428855.webp&quot; alt=&quot;image-20260529165428855&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;环境光遮蔽贴图&quot;&gt;环境光遮蔽贴图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#环境光遮蔽贴图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529170037850.webp&quot; alt=&quot;image-20260529170037850&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;比如某些模型上面会出现孔洞什么的,在现实中,对于那些小坑会显示出黑影,月球就是一个最好的例子,比如月亮上的黑斑就是陨石砸的坑&lt;/p&gt;
&lt;p&gt;在unity中就是使用环境光遮蔽贴图可以标识物体表面各部位受环境光遮蔽的效果的程度即被环境光遮挡的情况&lt;/p&gt;
&lt;p&gt;我们需要和之前一样的操作,用材质连接环境光遮蔽通道&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529171106980.webp&quot; alt=&quot;image-20260529171106980&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;去掉自发光节点恢复成普通不发光的材质,现在来看是不是很真实呢(说实话,这个让我想起了玩早期GTA的时候的那个粗糙的建模了 &lt;font color=&quot;#FFD700&quot;&gt;狗头狗头&lt;/font&gt;)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E5%85%89%E7%85%A7%E5%9F%BA%E7%A1%80/image-20260529171458169.webp&quot; alt=&quot;image-20260529171458169&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaserGraph</category></item><item><title>Typora主题推荐</title><link>https://huyangpahuo.vercel.app/posts/typora-zhu-ti-tui-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/typora-zhu-ti-tui-jian/</guid><description>本篇推荐一个typora的主题</description><pubDate>Sat, 23 May 2026 21:20:47 GMT</pubDate><content:encoded>&lt;h1 id=&quot;typora主题市场有很多主题&quot;&gt;Typora主题市场有很多主题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#typora主题市场有很多主题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;但是很多都是花里胡哨的,之前一直用的是默认的Night主题,而且对眼睛很不好,如果说美观+简洁+护眼的话我推荐这个主题&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E4%B8%BB%E9%A2%98%E6%8E%A8%E8%8D%90/image-20261009214939829.webp&quot; alt=&quot;image-20261009214939829&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个文件放到你的typora主题文件夹并重启typora即可&lt;/p&gt;
&lt;h2 id=&quot;d42ker-githubcss&quot;&gt;d42ker-github.css&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#d42ker-githubcss&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3L4.35,6.34H17.94L17.5,8.5H3.92L3.26,11.83H16.85L16.09,15.64L10.61,17.45L5.86,15.64L6.19,14H2.85L2.06,18L9.91,21L18.96,18L20.16,11.97L20.4,10.76L21.94,3H5Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;css&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;span&gt;191&lt;/span&gt;&lt;span&gt;192&lt;/span&gt;&lt;span&gt;193&lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;195&lt;/span&gt;&lt;span&gt;196&lt;/span&gt;&lt;span&gt;197&lt;/span&gt;&lt;span&gt;198&lt;/span&gt;&lt;span&gt;199&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;201&lt;/span&gt;&lt;span&gt;202&lt;/span&gt;&lt;span&gt;203&lt;/span&gt;&lt;span&gt;204&lt;/span&gt;&lt;span&gt;205&lt;/span&gt;&lt;span&gt;206&lt;/span&gt;&lt;span&gt;207&lt;/span&gt;&lt;span&gt;208&lt;/span&gt;&lt;span&gt;209&lt;/span&gt;&lt;span&gt;210&lt;/span&gt;&lt;span&gt;211&lt;/span&gt;&lt;span&gt;212&lt;/span&gt;&lt;span&gt;213&lt;/span&gt;&lt;span&gt;214&lt;/span&gt;&lt;span&gt;215&lt;/span&gt;&lt;span&gt;216&lt;/span&gt;&lt;span&gt;217&lt;/span&gt;&lt;span&gt;218&lt;/span&gt;&lt;span&gt;219&lt;/span&gt;&lt;span&gt;220&lt;/span&gt;&lt;span&gt;221&lt;/span&gt;&lt;span&gt;222&lt;/span&gt;&lt;span&gt;223&lt;/span&gt;&lt;span&gt;224&lt;/span&gt;&lt;span&gt;225&lt;/span&gt;&lt;span&gt;226&lt;/span&gt;&lt;span&gt;227&lt;/span&gt;&lt;span&gt;228&lt;/span&gt;&lt;span&gt;229&lt;/span&gt;&lt;span&gt;230&lt;/span&gt;&lt;span&gt;231&lt;/span&gt;&lt;span&gt;232&lt;/span&gt;&lt;span&gt;233&lt;/span&gt;&lt;span&gt;234&lt;/span&gt;&lt;span&gt;235&lt;/span&gt;&lt;span&gt;236&lt;/span&gt;&lt;span&gt;237&lt;/span&gt;&lt;span&gt;238&lt;/span&gt;&lt;span&gt;239&lt;/span&gt;&lt;span&gt;240&lt;/span&gt;&lt;span&gt;241&lt;/span&gt;&lt;span&gt;242&lt;/span&gt;&lt;span&gt;243&lt;/span&gt;&lt;span&gt;244&lt;/span&gt;&lt;span&gt;245&lt;/span&gt;&lt;span&gt;246&lt;/span&gt;&lt;span&gt;247&lt;/span&gt;&lt;span&gt;248&lt;/span&gt;&lt;span&gt;249&lt;/span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;251&lt;/span&gt;&lt;span&gt;252&lt;/span&gt;&lt;span&gt;253&lt;/span&gt;&lt;span&gt;254&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;257&lt;/span&gt;&lt;span&gt;258&lt;/span&gt;&lt;span&gt;259&lt;/span&gt;&lt;span&gt;260&lt;/span&gt;&lt;span&gt;261&lt;/span&gt;&lt;span&gt;262&lt;/span&gt;&lt;span&gt;263&lt;/span&gt;&lt;span&gt;264&lt;/span&gt;&lt;span&gt;265&lt;/span&gt;&lt;span&gt;266&lt;/span&gt;&lt;span&gt;267&lt;/span&gt;&lt;span&gt;268&lt;/span&gt;&lt;span&gt;269&lt;/span&gt;&lt;span&gt;270&lt;/span&gt;&lt;span&gt;271&lt;/span&gt;&lt;span&gt;272&lt;/span&gt;&lt;span&gt;273&lt;/span&gt;&lt;span&gt;274&lt;/span&gt;&lt;span&gt;275&lt;/span&gt;&lt;span&gt;276&lt;/span&gt;&lt;span&gt;277&lt;/span&gt;&lt;span&gt;278&lt;/span&gt;&lt;span&gt;279&lt;/span&gt;&lt;span&gt;280&lt;/span&gt;&lt;span&gt;281&lt;/span&gt;&lt;span&gt;282&lt;/span&gt;&lt;span&gt;283&lt;/span&gt;&lt;span&gt;284&lt;/span&gt;&lt;span&gt;285&lt;/span&gt;&lt;span&gt;286&lt;/span&gt;&lt;span&gt;287&lt;/span&gt;&lt;span&gt;288&lt;/span&gt;&lt;span&gt;289&lt;/span&gt;&lt;span&gt;290&lt;/span&gt;&lt;span&gt;291&lt;/span&gt;&lt;span&gt;292&lt;/span&gt;&lt;span&gt;293&lt;/span&gt;&lt;span&gt;294&lt;/span&gt;&lt;span&gt;295&lt;/span&gt;&lt;span&gt;296&lt;/span&gt;&lt;span&gt;297&lt;/span&gt;&lt;span&gt;298&lt;/span&gt;&lt;span&gt;299&lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt;301&lt;/span&gt;&lt;span&gt;302&lt;/span&gt;&lt;span&gt;303&lt;/span&gt;&lt;span&gt;304&lt;/span&gt;&lt;span&gt;305&lt;/span&gt;&lt;span&gt;306&lt;/span&gt;&lt;span&gt;307&lt;/span&gt;&lt;span&gt;308&lt;/span&gt;&lt;span&gt;309&lt;/span&gt;&lt;span&gt;310&lt;/span&gt;&lt;span&gt;311&lt;/span&gt;&lt;span&gt;312&lt;/span&gt;&lt;span&gt;313&lt;/span&gt;&lt;span&gt;314&lt;/span&gt;&lt;span&gt;315&lt;/span&gt;&lt;span&gt;316&lt;/span&gt;&lt;span&gt;317&lt;/span&gt;&lt;span&gt;318&lt;/span&gt;&lt;span&gt;319&lt;/span&gt;&lt;span&gt;320&lt;/span&gt;&lt;span&gt;321&lt;/span&gt;&lt;span&gt;322&lt;/span&gt;&lt;span&gt;323&lt;/span&gt;&lt;span&gt;324&lt;/span&gt;&lt;span&gt;325&lt;/span&gt;&lt;span&gt;326&lt;/span&gt;&lt;span&gt;327&lt;/span&gt;&lt;span&gt;328&lt;/span&gt;&lt;span&gt;329&lt;/span&gt;&lt;span&gt;330&lt;/span&gt;&lt;span&gt;331&lt;/span&gt;&lt;span&gt;332&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;334&lt;/span&gt;&lt;span&gt;335&lt;/span&gt;&lt;span&gt;336&lt;/span&gt;&lt;span&gt;337&lt;/span&gt;&lt;span&gt;338&lt;/span&gt;&lt;span&gt;339&lt;/span&gt;&lt;span&gt;340&lt;/span&gt;&lt;span&gt;341&lt;/span&gt;&lt;span&gt;342&lt;/span&gt;&lt;span&gt;343&lt;/span&gt;&lt;span&gt;344&lt;/span&gt;&lt;span&gt;345&lt;/span&gt;&lt;span&gt;346&lt;/span&gt;&lt;span&gt;347&lt;/span&gt;&lt;span&gt;348&lt;/span&gt;&lt;span&gt;349&lt;/span&gt;&lt;span&gt;350&lt;/span&gt;&lt;span&gt;351&lt;/span&gt;&lt;span&gt;352&lt;/span&gt;&lt;span&gt;353&lt;/span&gt;&lt;span&gt;354&lt;/span&gt;&lt;span&gt;355&lt;/span&gt;&lt;span&gt;356&lt;/span&gt;&lt;span&gt;357&lt;/span&gt;&lt;span&gt;358&lt;/span&gt;&lt;span&gt;359&lt;/span&gt;&lt;span&gt;360&lt;/span&gt;&lt;span&gt;361&lt;/span&gt;&lt;span&gt;362&lt;/span&gt;&lt;span&gt;363&lt;/span&gt;&lt;span&gt;364&lt;/span&gt;&lt;span&gt;365&lt;/span&gt;&lt;span&gt;366&lt;/span&gt;&lt;span&gt;367&lt;/span&gt;&lt;span&gt;368&lt;/span&gt;&lt;span&gt;369&lt;/span&gt;&lt;span&gt;370&lt;/span&gt;&lt;span&gt;371&lt;/span&gt;&lt;span&gt;372&lt;/span&gt;&lt;span&gt;373&lt;/span&gt;&lt;span&gt;374&lt;/span&gt;&lt;span&gt;375&lt;/span&gt;&lt;span&gt;376&lt;/span&gt;&lt;span&gt;377&lt;/span&gt;&lt;span&gt;378&lt;/span&gt;&lt;span&gt;379&lt;/span&gt;&lt;span&gt;380&lt;/span&gt;&lt;span&gt;381&lt;/span&gt;&lt;span&gt;382&lt;/span&gt;&lt;span&gt;383&lt;/span&gt;&lt;span&gt;384&lt;/span&gt;&lt;span&gt;385&lt;/span&gt;&lt;span&gt;386&lt;/span&gt;&lt;span&gt;387&lt;/span&gt;&lt;span&gt;388&lt;/span&gt;&lt;span&gt;389&lt;/span&gt;&lt;span&gt;390&lt;/span&gt;&lt;span&gt;391&lt;/span&gt;&lt;span&gt;392&lt;/span&gt;&lt;span&gt;393&lt;/span&gt;&lt;span&gt;394&lt;/span&gt;&lt;span&gt;395&lt;/span&gt;&lt;span&gt;396&lt;/span&gt;&lt;span&gt;397&lt;/span&gt;&lt;span&gt;398&lt;/span&gt;&lt;span&gt;399&lt;/span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;401&lt;/span&gt;&lt;span&gt;402&lt;/span&gt;&lt;span&gt;403&lt;/span&gt;&lt;span&gt;404&lt;/span&gt;&lt;span&gt;405&lt;/span&gt;&lt;span&gt;406&lt;/span&gt;&lt;span&gt;407&lt;/span&gt;&lt;span&gt;408&lt;/span&gt;&lt;span&gt;409&lt;/span&gt;&lt;span&gt;410&lt;/span&gt;&lt;span&gt;411&lt;/span&gt;&lt;span&gt;412&lt;/span&gt;&lt;span&gt;413&lt;/span&gt;&lt;span&gt;414&lt;/span&gt;&lt;span&gt;415&lt;/span&gt;&lt;span&gt;416&lt;/span&gt;&lt;span&gt;417&lt;/span&gt;&lt;span&gt;418&lt;/span&gt;&lt;span&gt;419&lt;/span&gt;&lt;span&gt;420&lt;/span&gt;&lt;span&gt;421&lt;/span&gt;&lt;span&gt;422&lt;/span&gt;&lt;span&gt;423&lt;/span&gt;&lt;span&gt;424&lt;/span&gt;&lt;span&gt;425&lt;/span&gt;&lt;span&gt;426&lt;/span&gt;&lt;span&gt;427&lt;/span&gt;&lt;span&gt;428&lt;/span&gt;&lt;span&gt;429&lt;/span&gt;&lt;span&gt;430&lt;/span&gt;&lt;span&gt;431&lt;/span&gt;&lt;span&gt;432&lt;/span&gt;&lt;span&gt;433&lt;/span&gt;&lt;span&gt;434&lt;/span&gt;&lt;span&gt;435&lt;/span&gt;&lt;span&gt;436&lt;/span&gt;&lt;span&gt;437&lt;/span&gt;&lt;span&gt;438&lt;/span&gt;&lt;span&gt;439&lt;/span&gt;&lt;span&gt;440&lt;/span&gt;&lt;span&gt;441&lt;/span&gt;&lt;span&gt;442&lt;/span&gt;&lt;span&gt;443&lt;/span&gt;&lt;span&gt;444&lt;/span&gt;&lt;span&gt;445&lt;/span&gt;&lt;span&gt;446&lt;/span&gt;&lt;span&gt;447&lt;/span&gt;&lt;span&gt;448&lt;/span&gt;&lt;span&gt;449&lt;/span&gt;&lt;span&gt;450&lt;/span&gt;&lt;span&gt;451&lt;/span&gt;&lt;span&gt;452&lt;/span&gt;&lt;span&gt;453&lt;/span&gt;&lt;span&gt;454&lt;/span&gt;&lt;span&gt;455&lt;/span&gt;&lt;span&gt;456&lt;/span&gt;&lt;span&gt;457&lt;/span&gt;&lt;span&gt;458&lt;/span&gt;&lt;span&gt;459&lt;/span&gt;&lt;span&gt;460&lt;/span&gt;&lt;span&gt;461&lt;/span&gt;&lt;span&gt;462&lt;/span&gt;&lt;span&gt;463&lt;/span&gt;&lt;span&gt;464&lt;/span&gt;&lt;span&gt;465&lt;/span&gt;&lt;span&gt;466&lt;/span&gt;&lt;span&gt;467&lt;/span&gt;&lt;span&gt;468&lt;/span&gt;&lt;span&gt;469&lt;/span&gt;&lt;span&gt;470&lt;/span&gt;&lt;span&gt;471&lt;/span&gt;&lt;span&gt;472&lt;/span&gt;&lt;span&gt;473&lt;/span&gt;&lt;span&gt;474&lt;/span&gt;&lt;span&gt;475&lt;/span&gt;&lt;span&gt;476&lt;/span&gt;&lt;span&gt;477&lt;/span&gt;&lt;span&gt;478&lt;/span&gt;&lt;span&gt;479&lt;/span&gt;&lt;span&gt;480&lt;/span&gt;&lt;span&gt;481&lt;/span&gt;&lt;span&gt;482&lt;/span&gt;&lt;span&gt;483&lt;/span&gt;&lt;span&gt;484&lt;/span&gt;&lt;span&gt;485&lt;/span&gt;&lt;span&gt;486&lt;/span&gt;&lt;span&gt;487&lt;/span&gt;&lt;span&gt;488&lt;/span&gt;&lt;span&gt;489&lt;/span&gt;&lt;span&gt;490&lt;/span&gt;&lt;span&gt;491&lt;/span&gt;&lt;span&gt;492&lt;/span&gt;&lt;span&gt;493&lt;/span&gt;&lt;span&gt;494&lt;/span&gt;&lt;span&gt;495&lt;/span&gt;&lt;span&gt;496&lt;/span&gt;&lt;span&gt;497&lt;/span&gt;&lt;span&gt;498&lt;/span&gt;&lt;span&gt;499&lt;/span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;501&lt;/span&gt;&lt;span&gt;502&lt;/span&gt;&lt;span&gt;503&lt;/span&gt;&lt;span&gt;504&lt;/span&gt;&lt;span&gt;505&lt;/span&gt;&lt;span&gt;506&lt;/span&gt;&lt;span&gt;507&lt;/span&gt;&lt;span&gt;508&lt;/span&gt;&lt;span&gt;509&lt;/span&gt;&lt;span&gt;510&lt;/span&gt;&lt;span&gt;511&lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;513&lt;/span&gt;&lt;span&gt;514&lt;/span&gt;&lt;span&gt;515&lt;/span&gt;&lt;span&gt;516&lt;/span&gt;&lt;span&gt;517&lt;/span&gt;&lt;span&gt;518&lt;/span&gt;&lt;span&gt;519&lt;/span&gt;&lt;span&gt;520&lt;/span&gt;&lt;span&gt;521&lt;/span&gt;&lt;span&gt;522&lt;/span&gt;&lt;span&gt;523&lt;/span&gt;&lt;span&gt;524&lt;/span&gt;&lt;span&gt;525&lt;/span&gt;&lt;span&gt;526&lt;/span&gt;&lt;span&gt;527&lt;/span&gt;&lt;span&gt;528&lt;/span&gt;&lt;span&gt;529&lt;/span&gt;&lt;span&gt;530&lt;/span&gt;&lt;span&gt;531&lt;/span&gt;&lt;span&gt;532&lt;/span&gt;&lt;span&gt;533&lt;/span&gt;&lt;span&gt;534&lt;/span&gt;&lt;span&gt;535&lt;/span&gt;&lt;span&gt;536&lt;/span&gt;&lt;span&gt;537&lt;/span&gt;&lt;span&gt;538&lt;/span&gt;&lt;span&gt;539&lt;/span&gt;&lt;span&gt;540&lt;/span&gt;&lt;span&gt;541&lt;/span&gt;&lt;span&gt;542&lt;/span&gt;&lt;span&gt;543&lt;/span&gt;&lt;span&gt;544&lt;/span&gt;&lt;span&gt;545&lt;/span&gt;&lt;span&gt;546&lt;/span&gt;&lt;span&gt;547&lt;/span&gt;&lt;span&gt;548&lt;/span&gt;&lt;span&gt;549&lt;/span&gt;&lt;span&gt;550&lt;/span&gt;&lt;span&gt;551&lt;/span&gt;&lt;span&gt;552&lt;/span&gt;&lt;span&gt;553&lt;/span&gt;&lt;span&gt;554&lt;/span&gt;&lt;span&gt;555&lt;/span&gt;&lt;span&gt;556&lt;/span&gt;&lt;span&gt;557&lt;/span&gt;&lt;span&gt;558&lt;/span&gt;&lt;span&gt;559&lt;/span&gt;&lt;span&gt;560&lt;/span&gt;&lt;span&gt;561&lt;/span&gt;&lt;span&gt;562&lt;/span&gt;&lt;span&gt;563&lt;/span&gt;&lt;span&gt;564&lt;/span&gt;&lt;span&gt;565&lt;/span&gt;&lt;span&gt;566&lt;/span&gt;&lt;span&gt;567&lt;/span&gt;&lt;span&gt;568&lt;/span&gt;&lt;span&gt;569&lt;/span&gt;&lt;span&gt;570&lt;/span&gt;&lt;span&gt;571&lt;/span&gt;&lt;span&gt;572&lt;/span&gt;&lt;span&gt;573&lt;/span&gt;&lt;span&gt;574&lt;/span&gt;&lt;span&gt;575&lt;/span&gt;&lt;span&gt;576&lt;/span&gt;&lt;span&gt;577&lt;/span&gt;&lt;span&gt;578&lt;/span&gt;&lt;span&gt;579&lt;/span&gt;&lt;span&gt;580&lt;/span&gt;&lt;span&gt;581&lt;/span&gt;&lt;span&gt;582&lt;/span&gt;&lt;span&gt;583&lt;/span&gt;&lt;span&gt;584&lt;/span&gt;&lt;span&gt;585&lt;/span&gt;&lt;span&gt;586&lt;/span&gt;&lt;span&gt;587&lt;/span&gt;&lt;span&gt;588&lt;/span&gt;&lt;span&gt;589&lt;/span&gt;&lt;span&gt;590&lt;/span&gt;&lt;span&gt;591&lt;/span&gt;&lt;span&gt;592&lt;/span&gt;&lt;span&gt;593&lt;/span&gt;&lt;span&gt;594&lt;/span&gt;&lt;span&gt;595&lt;/span&gt;&lt;span&gt;596&lt;/span&gt;&lt;span&gt;597&lt;/span&gt;&lt;span&gt;598&lt;/span&gt;&lt;span&gt;599&lt;/span&gt;&lt;span&gt;600&lt;/span&gt;&lt;span&gt;601&lt;/span&gt;&lt;span&gt;602&lt;/span&gt;&lt;span&gt;603&lt;/span&gt;&lt;span&gt;604&lt;/span&gt;&lt;span&gt;605&lt;/span&gt;&lt;span&gt;606&lt;/span&gt;&lt;span&gt;607&lt;/span&gt;&lt;span&gt;608&lt;/span&gt;&lt;span&gt;609&lt;/span&gt;&lt;span&gt;610&lt;/span&gt;&lt;span&gt;611&lt;/span&gt;&lt;span&gt;612&lt;/span&gt;&lt;span&gt;613&lt;/span&gt;&lt;span&gt;614&lt;/span&gt;&lt;span&gt;615&lt;/span&gt;&lt;span&gt;616&lt;/span&gt;&lt;span&gt;617&lt;/span&gt;&lt;span&gt;618&lt;/span&gt;&lt;span&gt;619&lt;/span&gt;&lt;span&gt;620&lt;/span&gt;&lt;span&gt;621&lt;/span&gt;&lt;span&gt;622&lt;/span&gt;&lt;span&gt;623&lt;/span&gt;&lt;span&gt;624&lt;/span&gt;&lt;span&gt;625&lt;/span&gt;&lt;span&gt;626&lt;/span&gt;&lt;span&gt;627&lt;/span&gt;&lt;span&gt;628&lt;/span&gt;&lt;span&gt;629&lt;/span&gt;&lt;span&gt;630&lt;/span&gt;&lt;span&gt;631&lt;/span&gt;&lt;span&gt;632&lt;/span&gt;&lt;span&gt;633&lt;/span&gt;&lt;span&gt;634&lt;/span&gt;&lt;span&gt;635&lt;/span&gt;&lt;span&gt;636&lt;/span&gt;&lt;span&gt;637&lt;/span&gt;&lt;span&gt;638&lt;/span&gt;&lt;span&gt;639&lt;/span&gt;&lt;span&gt;640&lt;/span&gt;&lt;span&gt;641&lt;/span&gt;&lt;span&gt;642&lt;/span&gt;&lt;span&gt;643&lt;/span&gt;&lt;span&gt;644&lt;/span&gt;&lt;span&gt;645&lt;/span&gt;&lt;span&gt;646&lt;/span&gt;&lt;span&gt;647&lt;/span&gt;&lt;span&gt;648&lt;/span&gt;&lt;span&gt;649&lt;/span&gt;&lt;span&gt;650&lt;/span&gt;&lt;span&gt;651&lt;/span&gt;&lt;span&gt;652&lt;/span&gt;&lt;span&gt;653&lt;/span&gt;&lt;span&gt;654&lt;/span&gt;&lt;span&gt;655&lt;/span&gt;&lt;span&gt;656&lt;/span&gt;&lt;span&gt;657&lt;/span&gt;&lt;span&gt;658&lt;/span&gt;&lt;span&gt;659&lt;/span&gt;&lt;span&gt;660&lt;/span&gt;&lt;span&gt;661&lt;/span&gt;&lt;span&gt;662&lt;/span&gt;&lt;span&gt;663&lt;/span&gt;&lt;span&gt;664&lt;/span&gt;&lt;span&gt;665&lt;/span&gt;&lt;span&gt;666&lt;/span&gt;&lt;span&gt;667&lt;/span&gt;&lt;span&gt;668&lt;/span&gt;&lt;span&gt;669&lt;/span&gt;&lt;span&gt;670&lt;/span&gt;&lt;span&gt;671&lt;/span&gt;&lt;span&gt;672&lt;/span&gt;&lt;span&gt;673&lt;/span&gt;&lt;span&gt;674&lt;/span&gt;&lt;span&gt;675&lt;/span&gt;&lt;span&gt;676&lt;/span&gt;&lt;span&gt;677&lt;/span&gt;&lt;span&gt;678&lt;/span&gt;&lt;span&gt;679&lt;/span&gt;&lt;span&gt;680&lt;/span&gt;&lt;span&gt;681&lt;/span&gt;&lt;span&gt;682&lt;/span&gt;&lt;span&gt;683&lt;/span&gt;&lt;span&gt;684&lt;/span&gt;&lt;span&gt;685&lt;/span&gt;&lt;span&gt;686&lt;/span&gt;&lt;span&gt;687&lt;/span&gt;&lt;span&gt;688&lt;/span&gt;&lt;span&gt;689&lt;/span&gt;&lt;span&gt;690&lt;/span&gt;&lt;span&gt;691&lt;/span&gt;&lt;span&gt;692&lt;/span&gt;&lt;span&gt;693&lt;/span&gt;&lt;span&gt;694&lt;/span&gt;&lt;span&gt;695&lt;/span&gt;&lt;span&gt;696&lt;/span&gt;&lt;span&gt;697&lt;/span&gt;&lt;span&gt;698&lt;/span&gt;&lt;span&gt;699&lt;/span&gt;&lt;span&gt;700&lt;/span&gt;&lt;span&gt;701&lt;/span&gt;&lt;span&gt;702&lt;/span&gt;&lt;span&gt;703&lt;/span&gt;&lt;span&gt;704&lt;/span&gt;&lt;span&gt;705&lt;/span&gt;&lt;span&gt;706&lt;/span&gt;&lt;span&gt;707&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-css&quot;&gt;&lt;span class=&quot;token selector&quot;&gt;:root&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--side-bar-bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--control-text-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #aaa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--active-file-bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #383838&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--control-text-hover-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ddd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--item-hover-bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #404040&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--text-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #c0c0c0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--blur-text-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #80808080&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #191919&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--select-text-bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #663f3f &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--monospace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;IBM Plex Mono&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Fira Code&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; monospace &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--window-border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #404040&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--rawblock-edit-panel-bd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--mermaid-theme&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; dark&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--mermaid-font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;IBM Plex Mono&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Fira Code&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; monospace &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--mermaid-sequence-numbers&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; off&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* or &quot;on&quot;, see https://mermaid-js.github.io/mermaid/#/sequenceDiagram?id=sequencenumbers*/&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--mermaid-flowchart-curve&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; basis
    &lt;span class=&quot;token comment&quot;&gt;/* or &quot;basis&quot;, see https://github.com/typora/typora-issues/issues/1632*/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--mermaid--gantt-left-padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 100&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;/* see https://github.com/typora/typora-issues/issues/1665*/&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--heading-char-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #aaa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--meta-content-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #6794bc&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--primary-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #d86666&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;::-webkit-scrollbar-thumb&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #42424280 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.menu-item-container a.menu-style-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;body&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;IBM Plex Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Microsoft YaHei&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Open Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Clear Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Helvetica Neue&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    Helvetica&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Arial&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #d0d0d0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.75&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;scroll-behavior&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; smooth&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#typora-quick-open&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#write&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;max-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 860px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 auto&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 30px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 100px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#write &gt; ul:first-child,
#write &gt; ol:first-child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 30px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#recent-file-panel tbody tr:nth-child(2n-1)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #242424&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/*table,
input {
  border: 1px solid #aaa !important;
}*/&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#write a&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #d86666&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #d8666680&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-comment&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--text-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.5&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--monospace&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;h1,
h2,
h3,
h4,
h5,
h6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;position&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; relative&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; bold&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.4&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;cursor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; text&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1 tt,
h1 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h2 tt,
h2 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h3 tt,
h3 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h4 tt,
h4 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h5 tt,
h5 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h6 tt,
h6 code&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h1&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.3em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2.25em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #202020&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.3em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.75em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.225&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #202020&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.5em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.43&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h4&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.25em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h5&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;h6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #777&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;p,
blockquote,
ul,
ol,
dl,
table&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.8em 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;li &gt; ol,
li &gt; ul&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;hr&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 32px 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;box-sizing&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; content-box&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;li p.first&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;display&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inline-block&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;ul,
ol&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 30px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;ul:first-child,
ol:first-child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;ul:last-child,
ol:last-child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;blockquote&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px solid #aaaaaa80&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 15px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #aaa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;blockquote blockquote&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;word-break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; initial&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr:nth-child(2n),
thead&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr th&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; bold&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #383838&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px 13px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr td&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #383838&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px 13px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr th:first-child,
table tr td:first-child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;table tr th:last-child,
table tr td:last-child&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;strong,
b&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #f0f0f0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.CodeMirror-lines&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.code-tooltip&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;box-shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 1px 1px 0 &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;26&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 26&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 26&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #202020&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-fences,
code,
tt&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #42424280&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px 4px 1px 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.85em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-fences&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 15px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 15px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.2em 1em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 8px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-task-list-item &gt; input&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -1.3em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token atrule&quot;&gt;&lt;span class=&quot;token rule&quot;&gt;@media&lt;/span&gt; print&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;html&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 13px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;table,
  pre&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;page-break-inside&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; avoid&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token selector&quot;&gt;pre&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;word-wrap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; break-word&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-fences&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#write pre.md-meta-block&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 85%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1.45&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #aaa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.mathjax-block &gt; .code-tooltip&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.375rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-mathjax-midline&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fafafa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#write &gt; h3.md-focus:before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -1.5625rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.375rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#write &gt; h4.md-focus:before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -1.5625rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.285714286rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#write &gt; h5.md-focus:before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -1.5625rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.285714286rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#write &gt; h6.md-focus:before&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -1.5625rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.285714286rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.md-image &gt; .md-meta&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 2px 0px 0px 4px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0.9em&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; inherit&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-tag&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #a7a7a7&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .5&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-toc&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.sidebar-tabs&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-bottom&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#typora-quick-open&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #dddddd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #f8f8f8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#typora-quick-open-item&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fafafa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fefefe #e5e5e5 #e5e5e5 #eee&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; solid&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-width&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;footer.ty-footer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #292a2d&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #292a2d &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.footer-item&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#outline-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -2px &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.typora-sourceview-on #toggle-sourceview-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #484848 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.sidebar-content-content&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;IBM Plex Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Microsoft YaHei&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Open Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Clear Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Helvetica Neue&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    Helvetica&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Arial&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.outline-content&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px 10px &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; left &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.outline-item.outline-item-active&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -28px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -28px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 28px solid transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 28px solid transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.sidebar-footer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #292a2d&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #292a2d&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.sidebar-footer-item&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 25px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;padding-top&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0px &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.file-node-icon&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.file-node-open-state&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;margin-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 6px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.dropdown-menu&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #2a2a2a &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.dropdown-menu .divider&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #424242 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* focus mode */&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode blockquote&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-left-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;85&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 85&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 85&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.12&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) img&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode .task-list-item:not(.md-focus-container) &gt; input&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 20%&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode
  .md-fences.md-focus
  .CodeMirror-code
  &gt; *:not(.CodeMirror-activeline)
  *,
.on-focus-mode .CodeMirror.cm-s-inner:not(.CodeMirror-focused) *&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #80808080 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode li[cid]:not(.md-focus-container)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #80808080 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;/*.on-focus-mode #typora-source .CodeMirror-code&gt;*:not(.CodeMirror-activeline) * {
  color: #80808080!important;
}*/&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode .md-focus,
.on-focus-mode .md-focus-container&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #d0d0d0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) code,
.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) tt&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* focus mode end */&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;header,
.context-menu,
.megamenu-content,
footer&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;IBM Plex Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Microsoft YaHei&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;微软雅黑&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Open Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Clear Sans&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Helvetica Neue&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    Helvetica&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Arial&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sans-serif&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.megamenu-content&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #242424 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.megamenu-opened header&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #242424&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; none&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;visibility&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; visible&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;span.file-list-item-file-name-part&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #f0f0f0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.file-list-item-summary&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3rem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;overflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; hidden&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;font-size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 13px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;line-height&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 16px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;opacity&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; .7 &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.mac-seamless-mode #typora-sidebar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #fafafa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--side-bar-bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.md-lang&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #b4654d&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.html-for-mac .context-menu&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;--item-hover-bg-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #e6f0fe&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#md-notification .btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.dropdown-menu .divider&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #e5e5e5&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* code mirror */&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.CodeMirror-gutter-filler,
.CodeMirror-scrollbar-filler&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.CodeMirror-gutters&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #484848&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.CodeMirror-linenumber&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #808080&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-keyword&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;189&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 97&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 201&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-atom,
.cm-s-inner.cm-atom&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;131&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 115&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 236&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-number&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;73&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 190&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 143&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-def&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;123&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 123&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 255&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-variable&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-variable-2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;131&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 166&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 201&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-variable-3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;153&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 197&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 181&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;194&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 104&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 104&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-property&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-operator&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #b67e7e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-comment,
.cm-s-inner.cm-comment&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;216&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 158&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 99&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-string-2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;223&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 152&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 116&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-meta&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;158&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 158&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 158&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-qualifier&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;145&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 145&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 145&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-builtin&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;169&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 145&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 226&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-bracket&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;214&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 214&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 166&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-tag&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;162&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 207&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 154&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-attribute&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;169&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 169&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 216&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-header,
.cm-s-inner.cm-header&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;161&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 161&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 255&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-quote,
.cm-s-inner.cm-quote&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;90&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 158&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 90&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-hr,
.cm-s-inner.cm-hr&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;184&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 184&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 184&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-inner .cm-link,
.cm-s-inner.cm-link&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;134&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 134&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 197&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-negative&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;218&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 126&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 126&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-positive&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;118&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 189&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 118&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-header,
.cm-strong&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-weight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 700&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-del&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; line-through&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-em&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; italic&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-link&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;text-decoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; underline&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-error&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;255&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 75&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 75&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-invalidchar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;255&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 75&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 75&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-constant&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #50a5e2&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-defined&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #eccb66&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;div.CodeMirror span.CodeMirror-matchingbracket&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;139&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 230&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 139&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;div.CodeMirror span.CodeMirror-nonmatchingbracket&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;241&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 99&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 99&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-searching&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #ffa&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgba&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;255&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 255&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 0.4&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-tw-syntaxerror&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rgb&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 199&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #900&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.CodeMirror div.CodeMirror-cursor&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 3px solid #e4629a&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;#typora-source .CodeMirror-gutter-wrapper&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--monospace&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-typora-default .CodeMirror-activeline-background&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;left&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -99999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;right&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; -99999px&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #80808020&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-typora-default .cm-code, .cm-s-typora-default .cm-comment&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #8997d4&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; monospace&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--monospace&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-typora-default .cm-string&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #84a97e&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token selector&quot;&gt;.cm-s-typora-default .cm-tag&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #c36260&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;/* unibody */&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.megamenu-opened header&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.megamenu-menu&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--side-bar-bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#megamenu-back-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; transparent&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #a94442&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.megamenu-content&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;.long-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #9292928f&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

table&lt;span class=&quot;token comment&quot;&gt;/*,
input */&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #9292928f &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#recent-file-panel-action-btn&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--bg-color&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 1px solid #9292928f &lt;span class=&quot;token important&quot;&gt;!important&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#top-titlebar .toolbar-icon.btn.hover, #top-titlebar .toolbar-icon.btn:hover&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;background-color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; #212121&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token selector&quot;&gt;#top-titlebar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;font-family&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;--monospace&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>软件推荐</category><category>Typora</category></item><item><title>TexturePacker破解文件</title><link>https://huyangpahuo.vercel.app/posts/texturepacker-po-jie-wen-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/texturepacker-po-jie-wen-jian/</guid><description>修改注册表让texturepacker无限使用</description><pubDate>Sat, 23 May 2026 20:35:23 GMT</pubDate><content:encoded>&lt;h1 id=&quot;texturepacker可以用于精灵图的拆分&quot;&gt;TexturePacker可以用于精灵图的拆分&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#texturepacker可以用于精灵图的拆分&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这样我们用ai生成精灵图或者其他下载的资源就可以快速拆分&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codeandweb.com/texturepacker&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.codeandweb.com/texturepacker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/TexturePacker%E7%A0%B4%E8%A7%A3%E6%96%87%E4%BB%B6/image-20261009215350178.webp&quot; alt=&quot;image-20261009215350178&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;将这个写到txt文件,重命名为&lt;strong&gt;TexturePacker_Trial_Reset.reg&lt;/strong&gt;,然后双击文件即可,软件更新后依旧可用&lt;/p&gt;
&lt;p&gt;这个原作者为&lt;a href=&quot;https://github.com/pakholam/TexturePackerCrack&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://github.com/pakholam/TexturePackerCrack&lt;/a&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\code-and-web.de\TexturePacker]
@=&quot;&quot;
&quot;firstStart&quot;=&quot;false&quot;
&quot;autoUpdateCheck&quot;=&quot;false&quot;
&quot;autoUpdatesEnabled&quot;=&quot;false&quot;
&quot;sendStatisticsEnabled&quot;=&quot;false&quot;

[HKEY_CURRENT_USER\Software\code-and-web.de\TexturePacker\licensing]
&quot;agreementsAccepted&quot;=&quot;true&quot;
&quot;trialExpired&quot;=&quot;false&quot;

[HKEY_CURRENT_USER\Software\code-and-web.de\TexturePacker\licensing\data]
&quot;licenseType&quot;=&quot;single&quot;
&quot;licenseKeyPlain&quot;=&quot;TP-1234-1234-1234-1234&quot;
&quot;activatedComputers&quot;=dword:00000001
&quot;email&quot;=&quot;country@boy.com&quot;
&quot;expiryDate&quot;=&quot;2199-01-01&quot;
&quot;product&quot;=&quot;TexturePacker&quot;
&quot;street&quot;=&quot;country lane&quot;
&quot;freeUpdatesUntil&quot;=&quot;2199-01-01&quot;
&quot;cloudLicense&quot;=&quot;false&quot;
&quot;licensee&quot;=&quot;countryboy&quot;
&quot;numActivations&quot;=dword:00000001
&quot;company&quot;=&quot;countryboy&quot;
&quot;city&quot;=&quot;countryville&quot;
&quot;maxActivations&quot;=dword:00000001
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;&quot;&gt;&lt;/h2&gt;</content:encoded><category>软件推荐</category><category>TexturePacker</category></item><item><title>Hexo的bat便捷脚本</title><link>https://huyangpahuo.vercel.app/posts/hexo-de-bat-bian-jie-jiao-ben/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/hexo-de-bat-bian-jie-jiao-ben/</guid><description>本篇对hexo的clean generate deploy server四个命令用bat脚本实现偷懒</description><pubDate>Fri, 22 May 2026 21:06:03 GMT</pubDate><content:encoded>&lt;h2 id=&quot;deploybat&quot;&gt;deploy.bat&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#deploybat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个就是用来部署的,不带压缩功能,也没啥用了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;@echo off
chcp &lt;span class=&quot;token number&quot;&gt;65001&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; /d &lt;span class=&quot;token string&quot;&gt;&quot;D:\Blog\huyangpahuo&quot;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;. clean &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
call hexo clean
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; errorlevel &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; pause &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; goto :eof
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; ✨ &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Clean&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Done&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Old files cleared.


&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;. generate &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
call hexo generate
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; errorlevel &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; pause &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; goto :eof
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 🛠️  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Generate&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Done&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Site files are ready.


&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;. deploy &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; Deploying to GitHub Pages&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
call hexo deploy
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; errorlevel &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; pause &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; goto :eof
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 🥳 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Deploy&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Done&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Everything pushed to the cloud.

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Finished&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 👑 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Success&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Original assets deployed perfectly&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; Your site should be live soon at https://funingna-wakawaka.github.io
pause
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;previewbat&quot;&gt;preview.bat&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#previewbat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;本地预览,这个目前还在用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;@echo off
chcp &lt;span class=&quot;token number&quot;&gt;65001&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;nul
&lt;span class=&quot;token builtin class-name&quot;&gt;cd&lt;/span&gt; /d &lt;span class=&quot;token string&quot;&gt;&quot;D:\Blog\huyangpahuo&quot;&lt;/span&gt;

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;. clean &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
call hexo clean
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; errorlevel &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; pause &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; goto :eof
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; ✨ &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Clean&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Done&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Old files cleared.

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;. generate &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
call hexo generate
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; errorlevel &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; pause &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; goto :eof
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 🛠️  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Generate&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Done&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; Site files are ready.

&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;. server &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 🔔 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Reminder&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;: If you see the message &lt;span class=&quot;token string&quot;&gt;&apos;Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.&apos;&lt;/span&gt;, just refresh your browser at that URL to preview your website&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;
start http://localhost:4000/
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; 🌐 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;Server&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; Local server is running&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;.
call hexo server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Hexo</category><category>Hexo</category></item><item><title>IDM_downloader破解</title><link>https://huyangpahuo.vercel.app/posts/idm-downloader-po-jie/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/idm-downloader-po-jie/</guid><description>本篇用一个脚本破解IDM下载器</description><pubDate>Fri, 22 May 2026 20:35:23 GMT</pubDate><content:encoded>&lt;h2 id=&quot;idm-downloader破解&quot;&gt;IDM downloader破解&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#idm-downloader破解&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;写入txt文件重命名为&lt;strong&gt;IAS_v1.2_Chs.cmd&lt;/strong&gt;,在IDM启动的时候双击启用然后选择自己的破解项&lt;/p&gt;
&lt;p&gt;期间会出现检测到虚假序列号要求续费的情况,无需理会关掉提示即可(不过总是跳出来很烦人是这样的)&lt;/p&gt;
&lt;p&gt;这个原作者为&lt;a href=&quot;https://github.com/WindowsAddict/IDM-Activation-Script&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://github.com/WindowsAddict/IDM-Activation-Script&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;此软件在IDM更新后依旧可用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;cmd&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;span&gt;191&lt;/span&gt;&lt;span&gt;192&lt;/span&gt;&lt;span&gt;193&lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;195&lt;/span&gt;&lt;span&gt;196&lt;/span&gt;&lt;span&gt;197&lt;/span&gt;&lt;span&gt;198&lt;/span&gt;&lt;span&gt;199&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;201&lt;/span&gt;&lt;span&gt;202&lt;/span&gt;&lt;span&gt;203&lt;/span&gt;&lt;span&gt;204&lt;/span&gt;&lt;span&gt;205&lt;/span&gt;&lt;span&gt;206&lt;/span&gt;&lt;span&gt;207&lt;/span&gt;&lt;span&gt;208&lt;/span&gt;&lt;span&gt;209&lt;/span&gt;&lt;span&gt;210&lt;/span&gt;&lt;span&gt;211&lt;/span&gt;&lt;span&gt;212&lt;/span&gt;&lt;span&gt;213&lt;/span&gt;&lt;span&gt;214&lt;/span&gt;&lt;span&gt;215&lt;/span&gt;&lt;span&gt;216&lt;/span&gt;&lt;span&gt;217&lt;/span&gt;&lt;span&gt;218&lt;/span&gt;&lt;span&gt;219&lt;/span&gt;&lt;span&gt;220&lt;/span&gt;&lt;span&gt;221&lt;/span&gt;&lt;span&gt;222&lt;/span&gt;&lt;span&gt;223&lt;/span&gt;&lt;span&gt;224&lt;/span&gt;&lt;span&gt;225&lt;/span&gt;&lt;span&gt;226&lt;/span&gt;&lt;span&gt;227&lt;/span&gt;&lt;span&gt;228&lt;/span&gt;&lt;span&gt;229&lt;/span&gt;&lt;span&gt;230&lt;/span&gt;&lt;span&gt;231&lt;/span&gt;&lt;span&gt;232&lt;/span&gt;&lt;span&gt;233&lt;/span&gt;&lt;span&gt;234&lt;/span&gt;&lt;span&gt;235&lt;/span&gt;&lt;span&gt;236&lt;/span&gt;&lt;span&gt;237&lt;/span&gt;&lt;span&gt;238&lt;/span&gt;&lt;span&gt;239&lt;/span&gt;&lt;span&gt;240&lt;/span&gt;&lt;span&gt;241&lt;/span&gt;&lt;span&gt;242&lt;/span&gt;&lt;span&gt;243&lt;/span&gt;&lt;span&gt;244&lt;/span&gt;&lt;span&gt;245&lt;/span&gt;&lt;span&gt;246&lt;/span&gt;&lt;span&gt;247&lt;/span&gt;&lt;span&gt;248&lt;/span&gt;&lt;span&gt;249&lt;/span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;251&lt;/span&gt;&lt;span&gt;252&lt;/span&gt;&lt;span&gt;253&lt;/span&gt;&lt;span&gt;254&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;257&lt;/span&gt;&lt;span&gt;258&lt;/span&gt;&lt;span&gt;259&lt;/span&gt;&lt;span&gt;260&lt;/span&gt;&lt;span&gt;261&lt;/span&gt;&lt;span&gt;262&lt;/span&gt;&lt;span&gt;263&lt;/span&gt;&lt;span&gt;264&lt;/span&gt;&lt;span&gt;265&lt;/span&gt;&lt;span&gt;266&lt;/span&gt;&lt;span&gt;267&lt;/span&gt;&lt;span&gt;268&lt;/span&gt;&lt;span&gt;269&lt;/span&gt;&lt;span&gt;270&lt;/span&gt;&lt;span&gt;271&lt;/span&gt;&lt;span&gt;272&lt;/span&gt;&lt;span&gt;273&lt;/span&gt;&lt;span&gt;274&lt;/span&gt;&lt;span&gt;275&lt;/span&gt;&lt;span&gt;276&lt;/span&gt;&lt;span&gt;277&lt;/span&gt;&lt;span&gt;278&lt;/span&gt;&lt;span&gt;279&lt;/span&gt;&lt;span&gt;280&lt;/span&gt;&lt;span&gt;281&lt;/span&gt;&lt;span&gt;282&lt;/span&gt;&lt;span&gt;283&lt;/span&gt;&lt;span&gt;284&lt;/span&gt;&lt;span&gt;285&lt;/span&gt;&lt;span&gt;286&lt;/span&gt;&lt;span&gt;287&lt;/span&gt;&lt;span&gt;288&lt;/span&gt;&lt;span&gt;289&lt;/span&gt;&lt;span&gt;290&lt;/span&gt;&lt;span&gt;291&lt;/span&gt;&lt;span&gt;292&lt;/span&gt;&lt;span&gt;293&lt;/span&gt;&lt;span&gt;294&lt;/span&gt;&lt;span&gt;295&lt;/span&gt;&lt;span&gt;296&lt;/span&gt;&lt;span&gt;297&lt;/span&gt;&lt;span&gt;298&lt;/span&gt;&lt;span&gt;299&lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt;301&lt;/span&gt;&lt;span&gt;302&lt;/span&gt;&lt;span&gt;303&lt;/span&gt;&lt;span&gt;304&lt;/span&gt;&lt;span&gt;305&lt;/span&gt;&lt;span&gt;306&lt;/span&gt;&lt;span&gt;307&lt;/span&gt;&lt;span&gt;308&lt;/span&gt;&lt;span&gt;309&lt;/span&gt;&lt;span&gt;310&lt;/span&gt;&lt;span&gt;311&lt;/span&gt;&lt;span&gt;312&lt;/span&gt;&lt;span&gt;313&lt;/span&gt;&lt;span&gt;314&lt;/span&gt;&lt;span&gt;315&lt;/span&gt;&lt;span&gt;316&lt;/span&gt;&lt;span&gt;317&lt;/span&gt;&lt;span&gt;318&lt;/span&gt;&lt;span&gt;319&lt;/span&gt;&lt;span&gt;320&lt;/span&gt;&lt;span&gt;321&lt;/span&gt;&lt;span&gt;322&lt;/span&gt;&lt;span&gt;323&lt;/span&gt;&lt;span&gt;324&lt;/span&gt;&lt;span&gt;325&lt;/span&gt;&lt;span&gt;326&lt;/span&gt;&lt;span&gt;327&lt;/span&gt;&lt;span&gt;328&lt;/span&gt;&lt;span&gt;329&lt;/span&gt;&lt;span&gt;330&lt;/span&gt;&lt;span&gt;331&lt;/span&gt;&lt;span&gt;332&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;334&lt;/span&gt;&lt;span&gt;335&lt;/span&gt;&lt;span&gt;336&lt;/span&gt;&lt;span&gt;337&lt;/span&gt;&lt;span&gt;338&lt;/span&gt;&lt;span&gt;339&lt;/span&gt;&lt;span&gt;340&lt;/span&gt;&lt;span&gt;341&lt;/span&gt;&lt;span&gt;342&lt;/span&gt;&lt;span&gt;343&lt;/span&gt;&lt;span&gt;344&lt;/span&gt;&lt;span&gt;345&lt;/span&gt;&lt;span&gt;346&lt;/span&gt;&lt;span&gt;347&lt;/span&gt;&lt;span&gt;348&lt;/span&gt;&lt;span&gt;349&lt;/span&gt;&lt;span&gt;350&lt;/span&gt;&lt;span&gt;351&lt;/span&gt;&lt;span&gt;352&lt;/span&gt;&lt;span&gt;353&lt;/span&gt;&lt;span&gt;354&lt;/span&gt;&lt;span&gt;355&lt;/span&gt;&lt;span&gt;356&lt;/span&gt;&lt;span&gt;357&lt;/span&gt;&lt;span&gt;358&lt;/span&gt;&lt;span&gt;359&lt;/span&gt;&lt;span&gt;360&lt;/span&gt;&lt;span&gt;361&lt;/span&gt;&lt;span&gt;362&lt;/span&gt;&lt;span&gt;363&lt;/span&gt;&lt;span&gt;364&lt;/span&gt;&lt;span&gt;365&lt;/span&gt;&lt;span&gt;366&lt;/span&gt;&lt;span&gt;367&lt;/span&gt;&lt;span&gt;368&lt;/span&gt;&lt;span&gt;369&lt;/span&gt;&lt;span&gt;370&lt;/span&gt;&lt;span&gt;371&lt;/span&gt;&lt;span&gt;372&lt;/span&gt;&lt;span&gt;373&lt;/span&gt;&lt;span&gt;374&lt;/span&gt;&lt;span&gt;375&lt;/span&gt;&lt;span&gt;376&lt;/span&gt;&lt;span&gt;377&lt;/span&gt;&lt;span&gt;378&lt;/span&gt;&lt;span&gt;379&lt;/span&gt;&lt;span&gt;380&lt;/span&gt;&lt;span&gt;381&lt;/span&gt;&lt;span&gt;382&lt;/span&gt;&lt;span&gt;383&lt;/span&gt;&lt;span&gt;384&lt;/span&gt;&lt;span&gt;385&lt;/span&gt;&lt;span&gt;386&lt;/span&gt;&lt;span&gt;387&lt;/span&gt;&lt;span&gt;388&lt;/span&gt;&lt;span&gt;389&lt;/span&gt;&lt;span&gt;390&lt;/span&gt;&lt;span&gt;391&lt;/span&gt;&lt;span&gt;392&lt;/span&gt;&lt;span&gt;393&lt;/span&gt;&lt;span&gt;394&lt;/span&gt;&lt;span&gt;395&lt;/span&gt;&lt;span&gt;396&lt;/span&gt;&lt;span&gt;397&lt;/span&gt;&lt;span&gt;398&lt;/span&gt;&lt;span&gt;399&lt;/span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;401&lt;/span&gt;&lt;span&gt;402&lt;/span&gt;&lt;span&gt;403&lt;/span&gt;&lt;span&gt;404&lt;/span&gt;&lt;span&gt;405&lt;/span&gt;&lt;span&gt;406&lt;/span&gt;&lt;span&gt;407&lt;/span&gt;&lt;span&gt;408&lt;/span&gt;&lt;span&gt;409&lt;/span&gt;&lt;span&gt;410&lt;/span&gt;&lt;span&gt;411&lt;/span&gt;&lt;span&gt;412&lt;/span&gt;&lt;span&gt;413&lt;/span&gt;&lt;span&gt;414&lt;/span&gt;&lt;span&gt;415&lt;/span&gt;&lt;span&gt;416&lt;/span&gt;&lt;span&gt;417&lt;/span&gt;&lt;span&gt;418&lt;/span&gt;&lt;span&gt;419&lt;/span&gt;&lt;span&gt;420&lt;/span&gt;&lt;span&gt;421&lt;/span&gt;&lt;span&gt;422&lt;/span&gt;&lt;span&gt;423&lt;/span&gt;&lt;span&gt;424&lt;/span&gt;&lt;span&gt;425&lt;/span&gt;&lt;span&gt;426&lt;/span&gt;&lt;span&gt;427&lt;/span&gt;&lt;span&gt;428&lt;/span&gt;&lt;span&gt;429&lt;/span&gt;&lt;span&gt;430&lt;/span&gt;&lt;span&gt;431&lt;/span&gt;&lt;span&gt;432&lt;/span&gt;&lt;span&gt;433&lt;/span&gt;&lt;span&gt;434&lt;/span&gt;&lt;span&gt;435&lt;/span&gt;&lt;span&gt;436&lt;/span&gt;&lt;span&gt;437&lt;/span&gt;&lt;span&gt;438&lt;/span&gt;&lt;span&gt;439&lt;/span&gt;&lt;span&gt;440&lt;/span&gt;&lt;span&gt;441&lt;/span&gt;&lt;span&gt;442&lt;/span&gt;&lt;span&gt;443&lt;/span&gt;&lt;span&gt;444&lt;/span&gt;&lt;span&gt;445&lt;/span&gt;&lt;span&gt;446&lt;/span&gt;&lt;span&gt;447&lt;/span&gt;&lt;span&gt;448&lt;/span&gt;&lt;span&gt;449&lt;/span&gt;&lt;span&gt;450&lt;/span&gt;&lt;span&gt;451&lt;/span&gt;&lt;span&gt;452&lt;/span&gt;&lt;span&gt;453&lt;/span&gt;&lt;span&gt;454&lt;/span&gt;&lt;span&gt;455&lt;/span&gt;&lt;span&gt;456&lt;/span&gt;&lt;span&gt;457&lt;/span&gt;&lt;span&gt;458&lt;/span&gt;&lt;span&gt;459&lt;/span&gt;&lt;span&gt;460&lt;/span&gt;&lt;span&gt;461&lt;/span&gt;&lt;span&gt;462&lt;/span&gt;&lt;span&gt;463&lt;/span&gt;&lt;span&gt;464&lt;/span&gt;&lt;span&gt;465&lt;/span&gt;&lt;span&gt;466&lt;/span&gt;&lt;span&gt;467&lt;/span&gt;&lt;span&gt;468&lt;/span&gt;&lt;span&gt;469&lt;/span&gt;&lt;span&gt;470&lt;/span&gt;&lt;span&gt;471&lt;/span&gt;&lt;span&gt;472&lt;/span&gt;&lt;span&gt;473&lt;/span&gt;&lt;span&gt;474&lt;/span&gt;&lt;span&gt;475&lt;/span&gt;&lt;span&gt;476&lt;/span&gt;&lt;span&gt;477&lt;/span&gt;&lt;span&gt;478&lt;/span&gt;&lt;span&gt;479&lt;/span&gt;&lt;span&gt;480&lt;/span&gt;&lt;span&gt;481&lt;/span&gt;&lt;span&gt;482&lt;/span&gt;&lt;span&gt;483&lt;/span&gt;&lt;span&gt;484&lt;/span&gt;&lt;span&gt;485&lt;/span&gt;&lt;span&gt;486&lt;/span&gt;&lt;span&gt;487&lt;/span&gt;&lt;span&gt;488&lt;/span&gt;&lt;span&gt;489&lt;/span&gt;&lt;span&gt;490&lt;/span&gt;&lt;span&gt;491&lt;/span&gt;&lt;span&gt;492&lt;/span&gt;&lt;span&gt;493&lt;/span&gt;&lt;span&gt;494&lt;/span&gt;&lt;span&gt;495&lt;/span&gt;&lt;span&gt;496&lt;/span&gt;&lt;span&gt;497&lt;/span&gt;&lt;span&gt;498&lt;/span&gt;&lt;span&gt;499&lt;/span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;501&lt;/span&gt;&lt;span&gt;502&lt;/span&gt;&lt;span&gt;503&lt;/span&gt;&lt;span&gt;504&lt;/span&gt;&lt;span&gt;505&lt;/span&gt;&lt;span&gt;506&lt;/span&gt;&lt;span&gt;507&lt;/span&gt;&lt;span&gt;508&lt;/span&gt;&lt;span&gt;509&lt;/span&gt;&lt;span&gt;510&lt;/span&gt;&lt;span&gt;511&lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;513&lt;/span&gt;&lt;span&gt;514&lt;/span&gt;&lt;span&gt;515&lt;/span&gt;&lt;span&gt;516&lt;/span&gt;&lt;span&gt;517&lt;/span&gt;&lt;span&gt;518&lt;/span&gt;&lt;span&gt;519&lt;/span&gt;&lt;span&gt;520&lt;/span&gt;&lt;span&gt;521&lt;/span&gt;&lt;span&gt;522&lt;/span&gt;&lt;span&gt;523&lt;/span&gt;&lt;span&gt;524&lt;/span&gt;&lt;span&gt;525&lt;/span&gt;&lt;span&gt;526&lt;/span&gt;&lt;span&gt;527&lt;/span&gt;&lt;span&gt;528&lt;/span&gt;&lt;span&gt;529&lt;/span&gt;&lt;span&gt;530&lt;/span&gt;&lt;span&gt;531&lt;/span&gt;&lt;span&gt;532&lt;/span&gt;&lt;span&gt;533&lt;/span&gt;&lt;span&gt;534&lt;/span&gt;&lt;span&gt;535&lt;/span&gt;&lt;span&gt;536&lt;/span&gt;&lt;span&gt;537&lt;/span&gt;&lt;span&gt;538&lt;/span&gt;&lt;span&gt;539&lt;/span&gt;&lt;span&gt;540&lt;/span&gt;&lt;span&gt;541&lt;/span&gt;&lt;span&gt;542&lt;/span&gt;&lt;span&gt;543&lt;/span&gt;&lt;span&gt;544&lt;/span&gt;&lt;span&gt;545&lt;/span&gt;&lt;span&gt;546&lt;/span&gt;&lt;span&gt;547&lt;/span&gt;&lt;span&gt;548&lt;/span&gt;&lt;span&gt;549&lt;/span&gt;&lt;span&gt;550&lt;/span&gt;&lt;span&gt;551&lt;/span&gt;&lt;span&gt;552&lt;/span&gt;&lt;span&gt;553&lt;/span&gt;&lt;span&gt;554&lt;/span&gt;&lt;span&gt;555&lt;/span&gt;&lt;span&gt;556&lt;/span&gt;&lt;span&gt;557&lt;/span&gt;&lt;span&gt;558&lt;/span&gt;&lt;span&gt;559&lt;/span&gt;&lt;span&gt;560&lt;/span&gt;&lt;span&gt;561&lt;/span&gt;&lt;span&gt;562&lt;/span&gt;&lt;span&gt;563&lt;/span&gt;&lt;span&gt;564&lt;/span&gt;&lt;span&gt;565&lt;/span&gt;&lt;span&gt;566&lt;/span&gt;&lt;span&gt;567&lt;/span&gt;&lt;span&gt;568&lt;/span&gt;&lt;span&gt;569&lt;/span&gt;&lt;span&gt;570&lt;/span&gt;&lt;span&gt;571&lt;/span&gt;&lt;span&gt;572&lt;/span&gt;&lt;span&gt;573&lt;/span&gt;&lt;span&gt;574&lt;/span&gt;&lt;span&gt;575&lt;/span&gt;&lt;span&gt;576&lt;/span&gt;&lt;span&gt;577&lt;/span&gt;&lt;span&gt;578&lt;/span&gt;&lt;span&gt;579&lt;/span&gt;&lt;span&gt;580&lt;/span&gt;&lt;span&gt;581&lt;/span&gt;&lt;span&gt;582&lt;/span&gt;&lt;span&gt;583&lt;/span&gt;&lt;span&gt;584&lt;/span&gt;&lt;span&gt;585&lt;/span&gt;&lt;span&gt;586&lt;/span&gt;&lt;span&gt;587&lt;/span&gt;&lt;span&gt;588&lt;/span&gt;&lt;span&gt;589&lt;/span&gt;&lt;span&gt;590&lt;/span&gt;&lt;span&gt;591&lt;/span&gt;&lt;span&gt;592&lt;/span&gt;&lt;span&gt;593&lt;/span&gt;&lt;span&gt;594&lt;/span&gt;&lt;span&gt;595&lt;/span&gt;&lt;span&gt;596&lt;/span&gt;&lt;span&gt;597&lt;/span&gt;&lt;span&gt;598&lt;/span&gt;&lt;span&gt;599&lt;/span&gt;&lt;span&gt;600&lt;/span&gt;&lt;span&gt;601&lt;/span&gt;&lt;span&gt;602&lt;/span&gt;&lt;span&gt;603&lt;/span&gt;&lt;span&gt;604&lt;/span&gt;&lt;span&gt;605&lt;/span&gt;&lt;span&gt;606&lt;/span&gt;&lt;span&gt;607&lt;/span&gt;&lt;span&gt;608&lt;/span&gt;&lt;span&gt;609&lt;/span&gt;&lt;span&gt;610&lt;/span&gt;&lt;span&gt;611&lt;/span&gt;&lt;span&gt;612&lt;/span&gt;&lt;span&gt;613&lt;/span&gt;&lt;span&gt;614&lt;/span&gt;&lt;span&gt;615&lt;/span&gt;&lt;span&gt;616&lt;/span&gt;&lt;span&gt;617&lt;/span&gt;&lt;span&gt;618&lt;/span&gt;&lt;span&gt;619&lt;/span&gt;&lt;span&gt;620&lt;/span&gt;&lt;span&gt;621&lt;/span&gt;&lt;span&gt;622&lt;/span&gt;&lt;span&gt;623&lt;/span&gt;&lt;span&gt;624&lt;/span&gt;&lt;span&gt;625&lt;/span&gt;&lt;span&gt;626&lt;/span&gt;&lt;span&gt;627&lt;/span&gt;&lt;span&gt;628&lt;/span&gt;&lt;span&gt;629&lt;/span&gt;&lt;span&gt;630&lt;/span&gt;&lt;span&gt;631&lt;/span&gt;&lt;span&gt;632&lt;/span&gt;&lt;span&gt;633&lt;/span&gt;&lt;span&gt;634&lt;/span&gt;&lt;span&gt;635&lt;/span&gt;&lt;span&gt;636&lt;/span&gt;&lt;span&gt;637&lt;/span&gt;&lt;span&gt;638&lt;/span&gt;&lt;span&gt;639&lt;/span&gt;&lt;span&gt;640&lt;/span&gt;&lt;span&gt;641&lt;/span&gt;&lt;span&gt;642&lt;/span&gt;&lt;span&gt;643&lt;/span&gt;&lt;span&gt;644&lt;/span&gt;&lt;span&gt;645&lt;/span&gt;&lt;span&gt;646&lt;/span&gt;&lt;span&gt;647&lt;/span&gt;&lt;span&gt;648&lt;/span&gt;&lt;span&gt;649&lt;/span&gt;&lt;span&gt;650&lt;/span&gt;&lt;span&gt;651&lt;/span&gt;&lt;span&gt;652&lt;/span&gt;&lt;span&gt;653&lt;/span&gt;&lt;span&gt;654&lt;/span&gt;&lt;span&gt;655&lt;/span&gt;&lt;span&gt;656&lt;/span&gt;&lt;span&gt;657&lt;/span&gt;&lt;span&gt;658&lt;/span&gt;&lt;span&gt;659&lt;/span&gt;&lt;span&gt;660&lt;/span&gt;&lt;span&gt;661&lt;/span&gt;&lt;span&gt;662&lt;/span&gt;&lt;span&gt;663&lt;/span&gt;&lt;span&gt;664&lt;/span&gt;&lt;span&gt;665&lt;/span&gt;&lt;span&gt;666&lt;/span&gt;&lt;span&gt;667&lt;/span&gt;&lt;span&gt;668&lt;/span&gt;&lt;span&gt;669&lt;/span&gt;&lt;span&gt;670&lt;/span&gt;&lt;span&gt;671&lt;/span&gt;&lt;span&gt;672&lt;/span&gt;&lt;span&gt;673&lt;/span&gt;&lt;span&gt;674&lt;/span&gt;&lt;span&gt;675&lt;/span&gt;&lt;span&gt;676&lt;/span&gt;&lt;span&gt;677&lt;/span&gt;&lt;span&gt;678&lt;/span&gt;&lt;span&gt;679&lt;/span&gt;&lt;span&gt;680&lt;/span&gt;&lt;span&gt;681&lt;/span&gt;&lt;span&gt;682&lt;/span&gt;&lt;span&gt;683&lt;/span&gt;&lt;span&gt;684&lt;/span&gt;&lt;span&gt;685&lt;/span&gt;&lt;span&gt;686&lt;/span&gt;&lt;span&gt;687&lt;/span&gt;&lt;span&gt;688&lt;/span&gt;&lt;span&gt;689&lt;/span&gt;&lt;span&gt;690&lt;/span&gt;&lt;span&gt;691&lt;/span&gt;&lt;span&gt;692&lt;/span&gt;&lt;span&gt;693&lt;/span&gt;&lt;span&gt;694&lt;/span&gt;&lt;span&gt;695&lt;/span&gt;&lt;span&gt;696&lt;/span&gt;&lt;span&gt;697&lt;/span&gt;&lt;span&gt;698&lt;/span&gt;&lt;span&gt;699&lt;/span&gt;&lt;span&gt;700&lt;/span&gt;&lt;span&gt;701&lt;/span&gt;&lt;span&gt;702&lt;/span&gt;&lt;span&gt;703&lt;/span&gt;&lt;span&gt;704&lt;/span&gt;&lt;span&gt;705&lt;/span&gt;&lt;span&gt;706&lt;/span&gt;&lt;span&gt;707&lt;/span&gt;&lt;span&gt;708&lt;/span&gt;&lt;span&gt;709&lt;/span&gt;&lt;span&gt;710&lt;/span&gt;&lt;span&gt;711&lt;/span&gt;&lt;span&gt;712&lt;/span&gt;&lt;span&gt;713&lt;/span&gt;&lt;span&gt;714&lt;/span&gt;&lt;span&gt;715&lt;/span&gt;&lt;span&gt;716&lt;/span&gt;&lt;span&gt;717&lt;/span&gt;&lt;span&gt;718&lt;/span&gt;&lt;span&gt;719&lt;/span&gt;&lt;span&gt;720&lt;/span&gt;&lt;span&gt;721&lt;/span&gt;&lt;span&gt;722&lt;/span&gt;&lt;span&gt;723&lt;/span&gt;&lt;span&gt;724&lt;/span&gt;&lt;span&gt;725&lt;/span&gt;&lt;span&gt;726&lt;/span&gt;&lt;span&gt;727&lt;/span&gt;&lt;span&gt;728&lt;/span&gt;&lt;span&gt;729&lt;/span&gt;&lt;span&gt;730&lt;/span&gt;&lt;span&gt;731&lt;/span&gt;&lt;span&gt;732&lt;/span&gt;&lt;span&gt;733&lt;/span&gt;&lt;span&gt;734&lt;/span&gt;&lt;span&gt;735&lt;/span&gt;&lt;span&gt;736&lt;/span&gt;&lt;span&gt;737&lt;/span&gt;&lt;span&gt;738&lt;/span&gt;&lt;span&gt;739&lt;/span&gt;&lt;span&gt;740&lt;/span&gt;&lt;span&gt;741&lt;/span&gt;&lt;span&gt;742&lt;/span&gt;&lt;span&gt;743&lt;/span&gt;&lt;span&gt;744&lt;/span&gt;&lt;span&gt;745&lt;/span&gt;&lt;span&gt;746&lt;/span&gt;&lt;span&gt;747&lt;/span&gt;&lt;span&gt;748&lt;/span&gt;&lt;span&gt;749&lt;/span&gt;&lt;span&gt;750&lt;/span&gt;&lt;span&gt;751&lt;/span&gt;&lt;span&gt;752&lt;/span&gt;&lt;span&gt;753&lt;/span&gt;&lt;span&gt;754&lt;/span&gt;&lt;span&gt;755&lt;/span&gt;&lt;span&gt;756&lt;/span&gt;&lt;span&gt;757&lt;/span&gt;&lt;span&gt;758&lt;/span&gt;&lt;span&gt;759&lt;/span&gt;&lt;span&gt;760&lt;/span&gt;&lt;span&gt;761&lt;/span&gt;&lt;span&gt;762&lt;/span&gt;&lt;span&gt;763&lt;/span&gt;&lt;span&gt;764&lt;/span&gt;&lt;span&gt;765&lt;/span&gt;&lt;span&gt;766&lt;/span&gt;&lt;span&gt;767&lt;/span&gt;&lt;span&gt;768&lt;/span&gt;&lt;span&gt;769&lt;/span&gt;&lt;span&gt;770&lt;/span&gt;&lt;span&gt;771&lt;/span&gt;&lt;span&gt;772&lt;/span&gt;&lt;span&gt;773&lt;/span&gt;&lt;span&gt;774&lt;/span&gt;&lt;span&gt;775&lt;/span&gt;&lt;span&gt;776&lt;/span&gt;&lt;span&gt;777&lt;/span&gt;&lt;span&gt;778&lt;/span&gt;&lt;span&gt;779&lt;/span&gt;&lt;span&gt;780&lt;/span&gt;&lt;span&gt;781&lt;/span&gt;&lt;span&gt;782&lt;/span&gt;&lt;span&gt;783&lt;/span&gt;&lt;span&gt;784&lt;/span&gt;&lt;span&gt;785&lt;/span&gt;&lt;span&gt;786&lt;/span&gt;&lt;span&gt;787&lt;/span&gt;&lt;span&gt;788&lt;/span&gt;&lt;span&gt;789&lt;/span&gt;&lt;span&gt;790&lt;/span&gt;&lt;span&gt;791&lt;/span&gt;&lt;span&gt;792&lt;/span&gt;&lt;span&gt;793&lt;/span&gt;&lt;span&gt;794&lt;/span&gt;&lt;span&gt;795&lt;/span&gt;&lt;span&gt;796&lt;/span&gt;&lt;span&gt;797&lt;/span&gt;&lt;span&gt;798&lt;/span&gt;&lt;span&gt;799&lt;/span&gt;&lt;span&gt;800&lt;/span&gt;&lt;span&gt;801&lt;/span&gt;&lt;span&gt;802&lt;/span&gt;&lt;span&gt;803&lt;/span&gt;&lt;span&gt;804&lt;/span&gt;&lt;span&gt;805&lt;/span&gt;&lt;span&gt;806&lt;/span&gt;&lt;span&gt;807&lt;/span&gt;&lt;span&gt;808&lt;/span&gt;&lt;span&gt;809&lt;/span&gt;&lt;span&gt;810&lt;/span&gt;&lt;span&gt;811&lt;/span&gt;&lt;span&gt;812&lt;/span&gt;&lt;span&gt;813&lt;/span&gt;&lt;span&gt;814&lt;/span&gt;&lt;span&gt;815&lt;/span&gt;&lt;span&gt;816&lt;/span&gt;&lt;span&gt;817&lt;/span&gt;&lt;span&gt;818&lt;/span&gt;&lt;span&gt;819&lt;/span&gt;&lt;span&gt;820&lt;/span&gt;&lt;span&gt;821&lt;/span&gt;&lt;span&gt;822&lt;/span&gt;&lt;span&gt;823&lt;/span&gt;&lt;span&gt;824&lt;/span&gt;&lt;span&gt;825&lt;/span&gt;&lt;span&gt;826&lt;/span&gt;&lt;span&gt;827&lt;/span&gt;&lt;span&gt;828&lt;/span&gt;&lt;span&gt;829&lt;/span&gt;&lt;span&gt;830&lt;/span&gt;&lt;span&gt;831&lt;/span&gt;&lt;span&gt;832&lt;/span&gt;&lt;span&gt;833&lt;/span&gt;&lt;span&gt;834&lt;/span&gt;&lt;span&gt;835&lt;/span&gt;&lt;span&gt;836&lt;/span&gt;&lt;span&gt;837&lt;/span&gt;&lt;span&gt;838&lt;/span&gt;&lt;span&gt;839&lt;/span&gt;&lt;span&gt;840&lt;/span&gt;&lt;span&gt;841&lt;/span&gt;&lt;span&gt;842&lt;/span&gt;&lt;span&gt;843&lt;/span&gt;&lt;span&gt;844&lt;/span&gt;&lt;span&gt;845&lt;/span&gt;&lt;span&gt;846&lt;/span&gt;&lt;span&gt;847&lt;/span&gt;&lt;span&gt;848&lt;/span&gt;&lt;span&gt;849&lt;/span&gt;&lt;span&gt;850&lt;/span&gt;&lt;span&gt;851&lt;/span&gt;&lt;span&gt;852&lt;/span&gt;&lt;span&gt;853&lt;/span&gt;&lt;span&gt;854&lt;/span&gt;&lt;span&gt;855&lt;/span&gt;&lt;span&gt;856&lt;/span&gt;&lt;span&gt;857&lt;/span&gt;&lt;span&gt;858&lt;/span&gt;&lt;span&gt;859&lt;/span&gt;&lt;span&gt;860&lt;/span&gt;&lt;span&gt;861&lt;/span&gt;&lt;span&gt;862&lt;/span&gt;&lt;span&gt;863&lt;/span&gt;&lt;span&gt;864&lt;/span&gt;&lt;span&gt;865&lt;/span&gt;&lt;span&gt;866&lt;/span&gt;&lt;span&gt;867&lt;/span&gt;&lt;span&gt;868&lt;/span&gt;&lt;span&gt;869&lt;/span&gt;&lt;span&gt;870&lt;/span&gt;&lt;span&gt;871&lt;/span&gt;&lt;span&gt;872&lt;/span&gt;&lt;span&gt;873&lt;/span&gt;&lt;span&gt;874&lt;/span&gt;&lt;span&gt;875&lt;/span&gt;&lt;span&gt;876&lt;/span&gt;&lt;span&gt;877&lt;/span&gt;&lt;span&gt;878&lt;/span&gt;&lt;span&gt;879&lt;/span&gt;&lt;span&gt;880&lt;/span&gt;&lt;span&gt;881&lt;/span&gt;&lt;span&gt;882&lt;/span&gt;&lt;span&gt;883&lt;/span&gt;&lt;span&gt;884&lt;/span&gt;&lt;span&gt;885&lt;/span&gt;&lt;span&gt;886&lt;/span&gt;&lt;span&gt;887&lt;/span&gt;&lt;span&gt;888&lt;/span&gt;&lt;span&gt;889&lt;/span&gt;&lt;span&gt;890&lt;/span&gt;&lt;span&gt;891&lt;/span&gt;&lt;span&gt;892&lt;/span&gt;&lt;span&gt;893&lt;/span&gt;&lt;span&gt;894&lt;/span&gt;&lt;span&gt;895&lt;/span&gt;&lt;span&gt;896&lt;/span&gt;&lt;span&gt;897&lt;/span&gt;&lt;span&gt;898&lt;/span&gt;&lt;span&gt;899&lt;/span&gt;&lt;span&gt;900&lt;/span&gt;&lt;span&gt;901&lt;/span&gt;&lt;span&gt;902&lt;/span&gt;&lt;span&gt;903&lt;/span&gt;&lt;span&gt;904&lt;/span&gt;&lt;span&gt;905&lt;/span&gt;&lt;span&gt;906&lt;/span&gt;&lt;span&gt;907&lt;/span&gt;&lt;span&gt;908&lt;/span&gt;&lt;span&gt;909&lt;/span&gt;&lt;span&gt;910&lt;/span&gt;&lt;span&gt;911&lt;/span&gt;&lt;span&gt;912&lt;/span&gt;&lt;span&gt;913&lt;/span&gt;&lt;span&gt;914&lt;/span&gt;&lt;span&gt;915&lt;/span&gt;&lt;span&gt;916&lt;/span&gt;&lt;span&gt;917&lt;/span&gt;&lt;span&gt;918&lt;/span&gt;&lt;span&gt;919&lt;/span&gt;&lt;span&gt;920&lt;/span&gt;&lt;span&gt;921&lt;/span&gt;&lt;span&gt;922&lt;/span&gt;&lt;span&gt;923&lt;/span&gt;&lt;span&gt;924&lt;/span&gt;&lt;span&gt;925&lt;/span&gt;&lt;span&gt;926&lt;/span&gt;&lt;span&gt;927&lt;/span&gt;&lt;span&gt;928&lt;/span&gt;&lt;span&gt;929&lt;/span&gt;&lt;span&gt;930&lt;/span&gt;&lt;span&gt;931&lt;/span&gt;&lt;span&gt;932&lt;/span&gt;&lt;span&gt;933&lt;/span&gt;&lt;span&gt;934&lt;/span&gt;&lt;span&gt;935&lt;/span&gt;&lt;span&gt;936&lt;/span&gt;&lt;span&gt;937&lt;/span&gt;&lt;span&gt;938&lt;/span&gt;&lt;span&gt;939&lt;/span&gt;&lt;span&gt;940&lt;/span&gt;&lt;span&gt;941&lt;/span&gt;&lt;span&gt;942&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;@set iasver=1.2
@setlocal DisableDelayedExpansion
@echo off



::============================================================================
::
::   IDM Activation Script (IAS)
::
::   Homepages: https://github.com/WindowsAddict/IDM-Activation-Script
::              https://massgrave.dev/idm-activation-script
::
::       Email: windowsaddict@protonmail.com
::
::============================================================================



::  To activate, run the script with &quot;/act&quot; parameter or change 0 to 1 in below line
set _activate=0

::  To Freeze the 30 days trial period, run the script with &quot;/frz&quot; parameter or change 0 to 1 in below line
set _freeze=0

::  To reset the activation and trial, run the script with &quot;/res&quot; parameter or change 0 to 1 in below line
set _reset=0

::  If value is changed in above lines or parameter is used then script will run in unattended mode

::========================================================================================================================================

::  Set Path variable, it helps if it is misconfigured in the system

set &quot;PATH=%SystemRoot%\System32;%SystemRoot%\System32\wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0\&quot;
if exist &quot;%SystemRoot%\Sysnative\reg.exe&quot; (
set &quot;PATH=%SystemRoot%\Sysnative;%SystemRoot%\Sysnative\wbem;%SystemRoot%\Sysnative\WindowsPowerShell\v1.0\;%PATH%&quot;
)

:: Re-launch the script with x64 process if it was initiated by x86 process on x64 bit Windows
:: or with ARM64 process if it was initiated by x86/ARM32 process on ARM64 Windows

set &quot;_cmdf=%~f0&quot;
for %%# in (%*) do (
if /i &quot;%%#&quot;==&quot;r1&quot; set r1=1
if /i &quot;%%#&quot;==&quot;r2&quot; set r2=1
)

if exist %SystemRoot%\Sysnative\cmd.exe if not defined r1 (
setlocal EnableDelayedExpansion
start %SystemRoot%\Sysnative\cmd.exe /c &quot;&quot;!_cmdf!&quot; %* r1&quot;
exit /b
)

:: Re-launch the script with ARM32 process if it was initiated by x64 process on ARM64 Windows

if exist %SystemRoot%\SysArm32\cmd.exe if %PROCESSOR_ARCHITECTURE%==AMD64 if not defined r2 (
setlocal EnableDelayedExpansion
start %SystemRoot%\SysArm32\cmd.exe /c &quot;&quot;!_cmdf!&quot; %* r2&quot;
exit /b
)

::========================================================================================================================================

set &quot;blank=&quot;
set &quot;mas=ht%blank%tps%blank%://mass%blank%grave.dev/&quot;

::  Check if Null service is working, it&apos;s important for the batch script

sc query Null | find /i &quot;RUNNING&quot;
if %errorlevel% NEQ 0 (
echo:
echo Null service is not running, script may crash...
echo:
echo:
echo Help - %mas%idm-activation-script.html#Troubleshoot
echo:
echo:
ping 127.0.0.1 -n 10
)
cls

::  Check LF line ending

pushd &quot;%~dp0&quot;
&gt;nul findstr /v &quot;$&quot; &quot;%~nx0&quot; &amp;#x26;&amp;#x26; (
echo:
echo Error: Script either has LF line ending issue or an empty line at the end of the script is missing.
echo:
ping 127.0.0.1 -n 6 &gt;nul
popd
exit /b
)
popd

::========================================================================================================================================

cls
color 07
title  IDM Activation Script %iasver%

set _args=
set _elev=
set _unattended=0

set _args=%*
if defined _args set _args=%_args:&quot;=%
if defined _args (
for %%A in (%_args%) do (
if /i &quot;%%A&quot;==&quot;-el&quot;  set _elev=1
if /i &quot;%%A&quot;==&quot;/res&quot; set _reset=1
if /i &quot;%%A&quot;==&quot;/frz&quot; set _freeze=1
if /i &quot;%%A&quot;==&quot;/act&quot; set _activate=1
)
)

for %%A in (%_activate% %_freeze% %_reset%) do (if &quot;%%A&quot;==&quot;1&quot; set _unattended=1)

::========================================================================================================================================

set &quot;nul1=1&gt;nul&quot;
set &quot;nul2=2&gt;nul&quot;
set &quot;nul6=2^&gt;nul&quot;
set &quot;nul=&gt;nul 2&gt;&amp;#x26;1&quot;

set psc=powershell.exe
set winbuild=1
for /f &quot;tokens=6 delims=[]. &quot; %%G in (&apos;ver&apos;) do set winbuild=%%G

set _NCS=1
if %winbuild% LSS 10586 set _NCS=0
if %winbuild% GEQ 10586 reg query &quot;HKCU\Console&quot; /v ForceV2 %nul2% | find /i &quot;0x0&quot; %nul1% &amp;#x26;&amp;#x26; (set _NCS=0)

if %_NCS% EQU 1 (
for /F %%a in (&apos;echo prompt $E ^| cmd&apos;) do set &quot;esc=%%a&quot;
set     &quot;Red=&quot;41;97m&quot;&quot;
set    &quot;Gray=&quot;100;97m&quot;&quot;
set   &quot;Green=&quot;42;97m&quot;&quot;
set    &quot;Blue=&quot;44;97m&quot;&quot;
set  &quot;_White=&quot;40;37m&quot;&quot;
set  &quot;_Green=&quot;40;92m&quot;&quot;
set &quot;_Yellow=&quot;40;93m&quot;&quot;
) else (
set     &quot;Red=&quot;Red&quot; &quot;white&quot;&quot;
set    &quot;Gray=&quot;Darkgray&quot; &quot;white&quot;&quot;
set   &quot;Green=&quot;DarkGreen&quot; &quot;white&quot;&quot;
set    &quot;Blue=&quot;Blue&quot; &quot;white&quot;&quot;
set  &quot;_White=&quot;Black&quot; &quot;Gray&quot;&quot;
set  &quot;_Green=&quot;Black&quot; &quot;Green&quot;&quot;
set &quot;_Yellow=&quot;Black&quot; &quot;Yellow&quot;&quot;
)

set &quot;nceline=echo: &amp;#x26;echo ==== ERROR ==== &amp;#x26;echo:&quot;
set &quot;eline=echo: &amp;#x26;call :_color %Red% &quot;==== ERROR ====&quot; &amp;#x26;echo:&quot;
set &quot;line=___________________________________________________________________________________________________&quot;
set &quot;_buf={$W=$Host.UI.RawUI.WindowSize;$B=$Host.UI.RawUI.BufferSize;$W.Height=34;$B.Height=300;$Host.UI.RawUI.WindowSize=$W;$Host.UI.RawUI.BufferSize=$B;}&quot;

::========================================================================================================================================

if %winbuild% LSS 7600 (
%nceline%
echo Unsupported OS version Detected [%winbuild%].
echo Project is supported only for Windows 7/8/8.1/10/11 and their Server equivalent.
goto done2
)

for %%# in (powershell.exe) do @if &quot;%%~$PATH:#&quot;==&quot;&quot; (
%nceline%
echo Unable to find powershell.exe in the system.
goto done2
)

::========================================================================================================================================

::  Fix for the special characters limitation in path name

set &quot;_work=%~dp0&quot;
if &quot;%_work:~-1%&quot;==&quot;\&quot; set &quot;_work=%_work:~0,-1%&quot;

set &quot;_batf=%~f0&quot;
set &quot;_batp=%_batf:&apos;=&apos;&apos;%&quot;

set _PSarg=&quot;&quot;&quot;%~f0&quot;&quot;&quot; -el %_args%
set _PSarg=%_PSarg:&apos;=&apos;&apos;%

set &quot;_appdata=%appdata%&quot;
set &quot;_ttemp=%userprofile%\AppData\Local\Temp&quot;

setlocal EnableDelayedExpansion

::========================================================================================================================================

echo &quot;!_batf!&quot; | find /i &quot;!_ttemp!&quot; %nul1% &amp;#x26;&amp;#x26; (
if /i not &quot;!_work!&quot;==&quot;!_ttemp!&quot; (
%eline%
echo Script is launched from the temp folder,
echo Most likely you are running the script directly from the archive file.
echo:
echo Extract the archive file and launch the script from the extracted folder.
goto done2
)
)

::========================================================================================================================================

::  Check PowerShell

REM :PowerShellTest: $ExecutionContext.SessionState.LanguageMode :PowerShellTest:

%psc% &quot;$f=[io.file]::ReadAllText(&apos;!_batp!&apos;) -split &apos;:PowerShellTest:\s*&apos;;iex ($f[1])&quot; | find /i &quot;FullLanguage&quot; %nul1% || (
%eline%
%psc% $ExecutionContext.SessionState.LanguageMode
echo:
echo PowerShell is not working. Aborting...
echo If you have applied restrictions on Powershell then undo those changes.
echo:
echo Check this page for help. %mas%idm-activation-script.html#Troubleshoot
goto done2
)

::========================================================================================================================================

::  Elevate script as admin and pass arguments and preventing loop

%nul1% fltmc || (
if not defined _elev %psc% &quot;start cmd.exe -arg &apos;/c \&quot;!_PSarg!\&quot;&apos; -verb runas&quot; &amp;#x26;&amp;#x26; exit /b
%eline%
echo This script requires admin privileges.
echo To do so, right click on this script and select &apos;Run as administrator&apos;.
goto done2
)

::========================================================================================================================================

::  Disable QuickEdit and launch from conhost.exe to avoid Terminal app

set quedit=
set terminal=

if %_unattended%==1 (
set quedit=1
set terminal=1
)

for %%# in (%_args%) do (if /i &quot;%%#&quot;==&quot;-qedit&quot; set quedit=1)

if %winbuild% LSS 10586 (
reg query HKCU\Console /v QuickEdit %nul2% | find /i &quot;0x0&quot; %nul1% &amp;#x26;&amp;#x26; set quedit=1
)

if %winbuild% GEQ 17763 (
set &quot;launchcmd=start conhost.exe %psc%&quot;
) else (
set &quot;launchcmd=%psc%&quot;
)

set &quot;d1=$t=[AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1).DefineDynamicModule(2, $False).DefineType(0);&quot;
set &quot;d2=$t.DefinePInvokeMethod(&apos;GetStdHandle&apos;, &apos;kernel32.dll&apos;, 22, 1, [IntPtr], @([Int32]), 1, 3).SetImplementationFlags(128);&quot;
set &quot;d3=$t.DefinePInvokeMethod(&apos;SetConsoleMode&apos;, &apos;kernel32.dll&apos;, 22, 1, [Boolean], @([IntPtr], [Int32]), 1, 3).SetImplementationFlags(128);&quot;
set &quot;d4=$k=$t.CreateType(); $b=$k::SetConsoleMode($k::GetStdHandle(-10), 0x0080);&quot;

if defined quedit goto :skipQE
%launchcmd% &quot;%d1% %d2% %d3% %d4% &amp;#x26; cmd.exe &apos;/c&apos; &apos;!_PSarg! -qedit&apos;&quot; &amp;#x26;exit /b
:skipQE

::========================================================================================================================================

::  Check for updates

set -=
set old=

for /f &quot;delims=[] tokens=2&quot; %%# in (&apos;ping -4 -n 1 iasupdatecheck.mass%-%grave.dev&apos;) do (
if not [%%#]==[] (echo &quot;%%#&quot; | find &quot;127.69&quot; %nul1% &amp;#x26;&amp;#x26; (echo &quot;%%#&quot; | find &quot;127.69.%iasver%&quot; %nul1% || set old=1))
)

if defined old (
echo ________________________________________________
%eline%
echo You are running outdated version IAS %iasver%
echo ________________________________________________
echo:
if not %_unattended%==1 (
echo [1] Get Latest IAS
echo [0] Continue Anyway
echo:
call :_color %_Green% &quot;Enter a menu option in the Keyboard [1,0] :&quot;
choice /C:10 /N
if !errorlevel!==2 rem
if !errorlevel!==1 (start https://github.com/WindowsAddict/IDM-Activation-Script &amp;#x26; start %mas%/idm-activation-script &amp;#x26; exit /b)
)
)

::========================================================================================================================================

cls
title  IDM Activation Script %iasver%

echo:
echo Initializing...

::  Check WMI

%psc% &quot;Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName&quot; %nul2% | find /i &quot;computersystem&quot; %nul1% || (
%eline%
%psc% &quot;Get-WmiObject -Class Win32_ComputerSystem | Select-Object -Property CreationClassName&quot;
echo:
echo WMI is not working. Aborting...
echo:
echo Check this page for help. %mas%idm-activation-script.html#Troubleshoot
goto done2
)

::  Check user account SID

set _sid=
for /f &quot;delims=&quot; %%a in (&apos;%psc% &quot;([System.Security.Principal.NTAccount](Get-WmiObject -Class Win32_ComputerSystem).UserName).Translate([System.Security.Principal.SecurityIdentifier]).Value&quot; %nul6%&apos;) do (set _sid=%%a)
 
reg query HKU\%_sid%\Software %nul% || (
for /f &quot;delims=&quot; %%a in (&apos;%psc% &quot;$explorerProc = Get-Process -Name explorer | Where-Object {$_.SessionId -eq (Get-Process -Id $pid).SessionId} | Select-Object -First 1; $sid = (gwmi -Query (&apos;Select * From Win32_Process Where ProcessID=&apos; + $explorerProc.Id)).GetOwnerSid().Sid; $sid&quot; %nul6%&apos;) do (set _sid=%%a)
)

reg query HKU\%_sid%\Software %nul% || (
%eline%
echo:
echo [%_sid%]
echo User Account SID not found. Aborting...
echo:
echo Check this page for help. %mas%idm-activation-script.html#Troubleshoot
goto done2
)

::========================================================================================================================================

::  Check if the current user SID is syncing with the HKCU entries

%nul% reg delete HKCU\IAS_TEST /f
%nul% reg delete HKU\%_sid%\IAS_TEST /f

set HKCUsync=$null
%nul% reg add HKCU\IAS_TEST
%nul% reg query HKU\%_sid%\IAS_TEST &amp;#x26;&amp;#x26; (
set HKCUsync=1
)

%nul% reg delete HKCU\IAS_TEST /f
%nul% reg delete HKU\%_sid%\IAS_TEST /f

::  Below code also works for ARM64 Windows 10 (including x64 bit emulation)

for /f &quot;skip=2 tokens=2*&quot; %%a in (&apos;reg query &quot;HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot; /v PROCESSOR_ARCHITECTURE&apos;) do set arch=%%b
if /i not &quot;%arch%&quot;==&quot;x86&quot; set arch=x64

if &quot;%arch%&quot;==&quot;x86&quot; (
set &quot;CLSID=HKCU\Software\Classes\CLSID&quot;
set &quot;CLSID2=HKU\%_sid%\Software\Classes\CLSID&quot;
set &quot;HKLM=HKLM\Software\Internet Download Manager&quot;
) else (
set &quot;CLSID=HKCU\Software\Classes\Wow6432Node\CLSID&quot;
set &quot;CLSID2=HKU\%_sid%\Software\Classes\Wow6432Node\CLSID&quot;
set &quot;HKLM=HKLM\SOFTWARE\Wow6432Node\Internet Download Manager&quot;
)

for /f &quot;tokens=2*&quot; %%a in (&apos;reg query &quot;HKU\%_sid%\Software\DownloadManager&quot; /v ExePath %nul6%&apos;) do call set &quot;IDMan=%%b&quot;

if not exist &quot;%IDMan%&quot; (
if %arch%==x64 set &quot;IDMan=%ProgramFiles(x86)%\Internet Download Manager\IDMan.exe&quot;
if %arch%==x86 set &quot;IDMan=%ProgramFiles%\Internet Download Manager\IDMan.exe&quot;
)

if not exist %SystemRoot%\Temp md %SystemRoot%\Temp
set &quot;idmcheck=tasklist /fi &quot;imagename eq idman.exe&quot; | findstr /i &quot;idman.exe&quot; %nul1%&quot;

::  Check CLSID registry access

%nul% reg add %CLSID2%\IAS_TEST
%nul% reg query %CLSID2%\IAS_TEST || (
%eline%
echo Failed to write in %CLSID2%
echo:
echo Check this page for help. %mas%idm-activation-script.html#Troubleshoot
goto done2
)

%nul% reg delete %CLSID2%\IAS_TEST /f

::========================================================================================================================================

if %_reset%==1 goto :_reset
if %_activate%==1 (set frz=0&amp;#x26;goto :_activate)
if %_freeze%==1 (set frz=1&amp;#x26;goto :_activate)

:MainMenu

cls
title  IDM Activation Script %iasver%
if not defined terminal mode 75, 28

echo:
echo:
echo:
echo:
echo:
echo:                This script is NOT working with latest IDM.     
echo:            ___________________________________________________ 
echo:                                                               
echo:               [1] Freeze Trial
echo:               [2] Activate
echo:               [3] Reset Activation / Trial
echo:               _____________________________________________   
echo:                                                               
echo:               [4] Download IDM
echo:               [5] Help
echo:               [0] Exit
echo:            ___________________________________________________
echo:         
call :_color2 %_White% &quot;             &quot; %_Green% &quot;Enter a menu option in the Keyboard [1,2,3,4,5,0]&quot;
choice /C:123450 /N
set _erl=%errorlevel%

if %_erl%==6 exit /b
if %_erl%==5 start https://github.com/WindowsAddict/IDM-Activation-Script &amp;#x26; start https://massgrave.dev/idm-activation-script &amp;#x26; goto MainMenu
if %_erl%==4 start https://www.internetdownloadmanager.com/download.html &amp;#x26; goto MainMenu
if %_erl%==3 goto _reset
if %_erl%==2 (set frz=0&amp;#x26;goto :_activate)
if %_erl%==1 (set frz=1&amp;#x26;goto :_activate)
goto :MainMenu

::========================================================================================================================================

:_reset

cls
if not %HKCUsync%==1 (
if not defined terminal mode 153, 35
) else (
if not defined terminal mode 113, 35
)
if not defined terminal %psc% &quot;&amp;#x26;%_buf%&quot; %nul%

echo:
%idmcheck% &amp;#x26;&amp;#x26; taskkill /f /im idman.exe

set _time=
for /f %%a in (&apos;%psc% &quot;(Get-Date).ToString(&apos;yyyyMMdd-HHmmssfff&apos;)&quot;&apos;) do set _time=%%a

echo:
echo Creating backup of CLSID registry keys in %SystemRoot%\Temp

reg export %CLSID% &quot;%SystemRoot%\Temp\_Backup_HKCU_CLSID_%_time%.reg&quot;
if not %HKCUsync%==1 reg export %CLSID2% &quot;%SystemRoot%\Temp\_Backup_HKU-%_sid%_CLSID_%_time%.reg&quot;

call :delete_queue
%psc% &quot;$sid = &apos;%_sid%&apos;; $HKCUsync = %HKCUsync%; $lockKey = $null; $deleteKey = 1; $f=[io.file]::ReadAllText(&apos;!_batp!&apos;) -split &apos;:regscan\:.*&apos;;iex ($f[1])&quot;

call :add_key

echo:
echo %line%
echo:
call :_color %Green% &quot;The IDM reset process has been completed.&quot;

goto done

:delete_queue

echo:
echo Deleting IDM registry keys...
echo:

for %%# in (
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;FName&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;LName&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;Email&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;Serial&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;scansk&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;tvfrdt&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;radxcnt&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;LstCheck&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;ptrk_scdt&quot;&quot;
&quot;&quot;HKCU\Software\DownloadManager&quot; &quot;/v&quot; &quot;LastCheckQU&quot;&quot;
&quot;%HKLM%&quot;
) do for /f &quot;tokens=* delims=&quot; %%A in (&quot;%%~#&quot;) do (
set &quot;reg=&quot;%%~A&quot;&quot; &amp;#x26;reg query !reg! %nul% &amp;#x26;&amp;#x26; call :del
)

if not %HKCUsync%==1 for %%# in (
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;FName&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;LName&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;Email&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;Serial&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;scansk&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;tvfrdt&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;radxcnt&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;LstCheck&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;ptrk_scdt&quot;&quot;
&quot;&quot;HKU\%_sid%\Software\DownloadManager&quot; &quot;/v&quot; &quot;LastCheckQU&quot;&quot;
) do for /f &quot;tokens=* delims=&quot; %%A in (&quot;%%~#&quot;) do (
set &quot;reg=&quot;%%~A&quot;&quot; &amp;#x26;reg query !reg! %nul% &amp;#x26;&amp;#x26; call :del
)

exit /b

:del

reg delete %reg% /f %nul%

if &quot;%errorlevel%&quot;==&quot;0&quot; (
set &quot;reg=%reg:&quot;=%&quot;
echo Deleted - !reg!
) else (
set &quot;reg=%reg:&quot;=%&quot;
call :_color2 %Red% &quot;Failed - !reg!&quot;
)

exit /b

::========================================================================================================================================

:_activate

cls
if not %HKCUsync%==1 (
if not defined terminal mode 153, 35
) else (
if not defined terminal mode 113, 35
)
if not defined terminal %psc% &quot;&amp;#x26;%_buf%&quot; %nul%

if %frz%==0 if %_unattended%==0 (
echo:
echo %line%
echo:
echo      Activation is not working for some users and IDM may show fake serial nag screen.
echo:
call :_color2 %_White% &quot;     &quot; %_Green% &quot;Its recommended to use Freeze Trial option instead.&quot;
echo %line%
echo:
choice /C:19 /N /M &quot;&gt;    [1] Go Back [9] Activate : &quot;
if !errorlevel!==1 goto :MainMenu
cls
)

echo:
if not exist &quot;%IDMan%&quot; (
call :_color %Red% &quot;IDM [Internet Download Manager] is not Installed.&quot;
echo You can download it from  https://www.internetdownloadmanager.com/download.html
goto done
)

:: Internet check with internetdownloadmanager.com ping and port 80 test

set _int=
for /f &quot;delims=[] tokens=2&quot; %%# in (&apos;ping -n 1 internetdownloadmanager.com&apos;) do (if not [%%#]==[] set _int=1)

if not defined _int (
%psc% &quot;$t = New-Object Net.Sockets.TcpClient;try{$t.Connect(&quot;&quot;&quot;internetdownloadmanager.com&quot;&quot;&quot;, 80)}catch{};$t.Connected&quot; | findstr /i &quot;true&quot; %nul1% || (
call :_color %Red% &quot;Unable to connect internetdownloadmanager.com, aborting...&quot;
goto done
)
call :_color %Gray% &quot;Ping command failed for internetdownloadmanager.com&quot;
echo:
)

for /f &quot;skip=2 tokens=2*&quot; %%a in (&apos;reg query &quot;HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion&quot; /v ProductName 2^&gt;nul&apos;) do set &quot;regwinos=%%b&quot;
for /f &quot;skip=2 tokens=2*&quot; %%a in (&apos;reg query &quot;HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment&quot; /v PROCESSOR_ARCHITECTURE&apos;) do set &quot;regarch=%%b&quot;
for /f &quot;tokens=6-7 delims=[]. &quot; %%i in (&apos;ver&apos;) do if &quot;%%j&quot;==&quot;&quot; (set fullbuild=%%i) else (set fullbuild=%%i.%%j)
for /f &quot;tokens=2*&quot; %%a in (&apos;reg query &quot;HKU\%_sid%\Software\DownloadManager&quot; /v idmvers %nul6%&apos;) do set &quot;IDMver=%%b&quot;

echo Checking Info - [%regwinos% ^| %fullbuild% ^| %regarch% ^| IDM: %IDMver%]

%idmcheck% &amp;#x26;&amp;#x26; (echo: &amp;#x26; taskkill /f /im idman.exe)

set _time=
for /f %%a in (&apos;%psc% &quot;(Get-Date).ToString(&apos;yyyyMMdd-HHmmssfff&apos;)&quot;&apos;) do set _time=%%a

echo:
echo Creating backup of CLSID registry keys in %SystemRoot%\Temp

reg export %CLSID% &quot;%SystemRoot%\Temp\_Backup_HKCU_CLSID_%_time%.reg&quot;
if not %HKCUsync%==1 reg export %CLSID2% &quot;%SystemRoot%\Temp\_Backup_HKU-%_sid%_CLSID_%_time%.reg&quot;

call :delete_queue
call :add_key

%psc% &quot;$sid = &apos;%_sid%&apos;; $HKCUsync = %HKCUsync%; $lockKey = 1; $deleteKey = $null; $toggle = 1; $f=[io.file]::ReadAllText(&apos;!_batp!&apos;) -split &apos;:regscan\:.*&apos;;iex ($f[1])&quot;

if %frz%==0 call :register_IDM

call :download_files
if not defined _fileexist (
%eline%
echo Error: Unable to download files with IDM.
echo:
echo Help: %mas%idm-activation-script.html#Troubleshoot
goto :done
)

%psc% &quot;$sid = &apos;%_sid%&apos;; $HKCUsync = %HKCUsync%; $lockKey = 1; $deleteKey = $null; $f=[io.file]::ReadAllText(&apos;!_batp!&apos;) -split &apos;:regscan\:.*&apos;;iex ($f[1])&quot;

echo:
echo %line%
echo:
if %frz%==0 (
call :_color %Green% &quot;The IDM Activation process has been completed.&quot;
echo:
call :_color %Gray% &quot;If the fake serial screen appears, use the Freeze Trial option instead.&quot;
) else (
call :_color %Green% &quot;The IDM 30 days trial period is successfully freezed for Lifetime.&quot;
echo:
call :_color %Gray% &quot;If IDM is showing a popup to register, reinstall IDM.&quot;
)

::========================================================================================================================================

:done

echo %line%
echo:
echo:
if %_unattended%==1 timeout /t 2 &amp;#x26; exit /b

if defined terminal (
call :_color %_Yellow% &quot;Press 0 key to return...&quot;
choice /c 0 /n
) else (
call :_color %_Yellow% &quot;Press any key to return...&quot;
pause %nul1%
)
goto MainMenu

:done2

if %_unattended%==1 timeout /t 2 &amp;#x26; exit /b

if defined terminal (
echo Press 0 key to exit...
choice /c 0 /n
) else (
echo Press any key to exit...
pause %nul1%
)
exit /b

::========================================================================================================================================

:_rcont

reg add %reg% %nul%
call :add
exit /b

:register_IDM

echo:
echo Applying registration details...
echo:

set /a fname = %random% %% 9999 + 1000
set /a lname = %random% %% 9999 + 1000
set email=%fname%.%lname%@tonec.com

for /f &quot;delims=&quot; %%a in (&apos;%psc% &quot;$key = -join ((Get-Random -Count  20 -InputObject ([char[]](&apos;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&apos;))));$key = ($key.Substring(0,  5) + &apos;-&apos; + $key.Substring(5,  5) + &apos;-&apos; + $key.Substring(10,  5) + &apos;-&apos; + $key.Substring(15,  5) + $key.Substring(20));Write-Output $key&quot; %nul6%&apos;) do (set key=%%a)

set &quot;reg=HKCU\SOFTWARE\DownloadManager /v FName /t REG_SZ /d &quot;%fname%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKCU\SOFTWARE\DownloadManager /v LName /t REG_SZ /d &quot;%lname%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKCU\SOFTWARE\DownloadManager /v Email /t REG_SZ /d &quot;%email%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKCU\SOFTWARE\DownloadManager /v Serial /t REG_SZ /d &quot;%key%&quot;&quot; &amp;#x26; call :_rcont

if not %HKCUsync%==1 (
set &quot;reg=HKU\%_sid%\SOFTWARE\DownloadManager /v FName /t REG_SZ /d &quot;%fname%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKU\%_sid%\SOFTWARE\DownloadManager /v LName /t REG_SZ /d &quot;%lname%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKU\%_sid%\SOFTWARE\DownloadManager /v Email /t REG_SZ /d &quot;%email%&quot;&quot; &amp;#x26; call :_rcont
set &quot;reg=HKU\%_sid%\SOFTWARE\DownloadManager /v Serial /t REG_SZ /d &quot;%key%&quot;&quot; &amp;#x26; call :_rcont
)
exit /b

:download_files

echo:
echo Triggering a few downloads to create certain registry keys, please wait...
echo:

set &quot;file=%SystemRoot%\Temp\temp.png&quot;
set _fileexist=

set link=https://www.internetdownloadmanager.com/images/idm_box_min.png
call :download
set link=https://www.internetdownloadmanager.com/register/IDMlib/images/idman_logos.png
call :download
set link=https://www.internetdownloadmanager.com/pictures/idm_about.png
call :download

echo:
timeout /t 3 %nul1%
%idmcheck% &amp;#x26;&amp;#x26; taskkill /f /im idman.exe
if exist &quot;%file%&quot; del /f /q &quot;%file%&quot;
exit /b

:download

set /a attempt=0
if exist &quot;%file%&quot; del /f /q &quot;%file%&quot;
start &quot;&quot; /B &quot;%IDMan%&quot; /n /d &quot;%link%&quot; /p &quot;%SystemRoot%\Temp&quot; /f temp.png

:check_file

timeout /t 1 %nul1%
set /a attempt+=1
if exist &quot;%file%&quot; set _fileexist=1&amp;#x26;exit /b
if %attempt% GEQ 20 exit /b
goto :Check_file

::========================================================================================================================================

:add_key

echo:
echo Adding registry key...
echo:

set &quot;reg=&quot;%HKLM%&quot; /v &quot;AdvIntDriverEnabled2&quot;&quot;

reg add %reg% /t REG_DWORD /d &quot;1&quot; /f %nul%

:add

if &quot;%errorlevel%&quot;==&quot;0&quot; (
set &quot;reg=%reg:&quot;=%&quot;
echo Added - !reg!
) else (
set &quot;reg=%reg:&quot;=%&quot;
call :_color2 %Red% &quot;Failed - !reg!&quot;
)
exit /b

::========================================================================================================================================

:regscan:
$finalValues = @()

$arch = (Get-ItemProperty -Path &apos;HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment&apos;).PROCESSOR_ARCHITECTURE
if ($arch -eq &quot;x86&quot;) {
  $regPaths = @(&quot;HKCU:\Software\Classes\CLSID&quot;, &quot;Registry::HKEY_USERS\$sid\Software\Classes\CLSID&quot;)
} else {
  $regPaths = @(&quot;HKCU:\Software\Classes\WOW6432Node\CLSID&quot;, &quot;Registry::HKEY_USERS\$sid\Software\Classes\Wow6432Node\CLSID&quot;)
}

foreach ($regPath in $regPaths) {
    if (($regPath -match &quot;HKEY_USERS&quot;) -and ($HKCUsync -ne $null)) {
        continue
    }
	
	Write-Host
	Write-Host &quot;Searching IDM CLSID Registry Keys in $regPath&quot;
	Write-Host
	
    $subKeys = Get-ChildItem -Path $regPath -ErrorAction SilentlyContinue -ErrorVariable lockedKeys | Where-Object { $_.PSChildName -match &apos;^\{[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}\}$&apos; }

    foreach ($lockedKey in $lockedKeys) {
        $leafValue = Split-Path -Path $lockedKey.TargetObject -Leaf
        $finalValues += $leafValue
        Write-Output &quot;$leafValue - Found Locked Key&quot;
    }

    if ($subKeys -eq $null) {
	continue
	}
	
	$subKeysToExclude = &quot;LocalServer32&quot;, &quot;InProcServer32&quot;, &quot;InProcHandler32&quot;

    $filteredKeys = $subKeys | Where-Object { !($_.GetSubKeyNames() | Where-Object { $subKeysToExclude -contains $_ }) }

    foreach ($key in $filteredKeys) {
        $fullPath = $key.PSPath
        $keyValues = Get-ItemProperty -Path $fullPath -ErrorAction SilentlyContinue
        $defaultValue = $keyValues.PSObject.Properties | Where-Object { $_.Name -eq &apos;(default)&apos; } | Select-Object -ExpandProperty Value

        if (($defaultValue -match &quot;^\d+$&quot;) -and ($key.SubKeyCount -eq 0)) {
            $finalValues += $($key.PSChildName)
            Write-Output &quot;$($key.PSChildName) - Found Digit In Default and No Subkeys&quot;
            continue
        }
        if (($defaultValue -match &quot;\+|=&quot;) -and ($key.SubKeyCount -eq 0)) {
            $finalValues += $($key.PSChildName)
            Write-Output &quot;$($key.PSChildName) - Found + or = In Default and No Subkeys&quot;
            continue
        }
        $versionValue = Get-ItemProperty -Path &quot;$fullPath\Version&quot; -ErrorAction SilentlyContinue | Select-Object -ExpandProperty &apos;(default)&apos; -ErrorAction SilentlyContinue
        if (($versionValue -match &quot;^\d+$&quot;) -and ($key.SubKeyCount -eq 1)) {
            $finalValues += $($key.PSChildName)
            Write-Output &quot;$($key.PSChildName) - Found Digit In \Version and No Other Subkeys&quot;
            continue
        }
        $keyValues.PSObject.Properties | ForEach-Object {
            if ($_.Name -match &quot;MData|Model|scansk|Therad&quot;) {
                $finalValues += $($key.PSChildName)
                Write-Output &quot;$($key.PSChildName) - Found MData Model scansk Therad&quot;
                continue
            }
        }
        if (($key.ValueCount -eq 0) -and ($key.SubKeyCount -eq 0)) {
            $finalValues += $($key.PSChildName)
            Write-Output &quot;$($key.PSChildName) - Found Empty Key&quot;
            continue
        }
    }
}

$finalValues = @($finalValues | Select-Object -Unique)

if ($finalValues -ne $null) {
    Write-Host
    if ($lockKey -ne $null) {
        Write-Host &quot;Locking IDM CLSID Registry Keys...&quot;
    }
    if ($deleteKey -ne $null) {
        Write-Host &quot;Deleting IDM CLSID Registry Keys...&quot;
    }
    Write-Host
} else {
    Write-Host &quot;IDM CLSID Registry Keys are not found.&quot;
	Exit
}

if (($finalValues.Count -gt 20) -and ($toggle -ne $null)) {
	$lockKey = $null
	$deleteKey = 1
    Write-Host &quot;The IDM keys count is more than 20. Deleting them now instead of locking...&quot;
	Write-Host
}

function Take-Permissions {
    param($rootKey, $regKey)
    $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly(4, 1)
    $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule(2, $False)
    $TypeBuilder = $ModuleBuilder.DefineType(0)

    $TypeBuilder.DefinePInvokeMethod(&apos;RtlAdjustPrivilege&apos;, &apos;ntdll.dll&apos;, &apos;Public, Static&apos;, 1, [int], @([int], [bool], [bool], [bool].MakeByRefType()), 1, 3) | Out-Null
    9,17,18 | ForEach-Object { $TypeBuilder.CreateType()::RtlAdjustPrivilege($_, $true, $false, [ref]$false) | Out-Null }

    $SID = New-Object System.Security.Principal.SecurityIdentifier(&apos;S-1-5-32-544&apos;)
    $IDN = ($SID.Translate([System.Security.Principal.NTAccount])).Value
    $Admin = New-Object System.Security.Principal.NTAccount($IDN)

    $everyone = New-Object System.Security.Principal.SecurityIdentifier(&apos;S-1-1-0&apos;)
    $none = New-Object System.Security.Principal.SecurityIdentifier(&apos;S-1-0-0&apos;)

    $key = [Microsoft.Win32.Registry]::$rootKey.OpenSubKey($regkey, &apos;ReadWriteSubTree&apos;, &apos;TakeOwnership&apos;)

    $acl = New-Object System.Security.AccessControl.RegistrySecurity
    $acl.SetOwner($Admin)
    $key.SetAccessControl($acl)

    $key = $key.OpenSubKey(&apos;&apos;, &apos;ReadWriteSubTree&apos;, &apos;ChangePermissions&apos;)
    $rule = New-Object System.Security.AccessControl.RegistryAccessRule($everyone, &apos;FullControl&apos;, &apos;ContainerInherit&apos;, &apos;None&apos;, &apos;Allow&apos;)
    $acl.ResetAccessRule($rule)
    $key.SetAccessControl($acl)

    if ($lockKey -ne $null) {
        $acl = New-Object System.Security.AccessControl.RegistrySecurity
        $acl.SetOwner($none)
        $key.SetAccessControl($acl)

        $key = $key.OpenSubKey(&apos;&apos;, &apos;ReadWriteSubTree&apos;, &apos;ChangePermissions&apos;)
        $rule = New-Object System.Security.AccessControl.RegistryAccessRule($everyone, &apos;FullControl&apos;, &apos;Deny&apos;)
        $acl.ResetAccessRule($rule)
        $key.SetAccessControl($acl)
    }
}

foreach ($regPath in $regPaths) {
    if (($regPath -match &quot;HKEY_USERS&quot;) -and ($HKCUsync -ne $null)) {
        continue
    }
    foreach ($finalValue in $finalValues) {
        $fullPath = Join-Path -Path $regPath -ChildPath $finalValue
        if ($fullPath -match &apos;HKCU:&apos;) {
            $rootKey = &apos;CurrentUser&apos;
        } else {
            $rootKey = &apos;Users&apos;
        }

        $position = $fullPath.IndexOf(&quot;\&quot;)
        $regKey = $fullPath.Substring($position + 1)

        if ($lockKey -ne $null) {
            if (-not (Test-Path -Path $fullPath -ErrorAction SilentlyContinue)) { New-Item -Path $fullPath -Force -ErrorAction SilentlyContinue | Out-Null }
            Take-Permissions $rootKey $regKey
            try {
                Remove-Item -Path $fullPath -Force -Recurse -ErrorAction Stop
                Write-Host -back &apos;DarkRed&apos; -fore &apos;white&apos; &quot;Failed - $fullPath&quot;
            }
            catch {
                Write-Host &quot;Locked - $fullPath&quot;
            }
        }

        if ($deleteKey -ne $null) {
            if (Test-Path -Path $fullPath) {
                Remove-Item -Path $fullPath -Force -Recurse -ErrorAction SilentlyContinue
                if (Test-Path -Path $fullPath) {
                    Take-Permissions $rootKey $regKey
                    try {
                        Remove-Item -Path $fullPath -Force -Recurse -ErrorAction Stop
                        Write-Host &quot;Deleted - $fullPath&quot;
                    }
                    catch {
                        Write-Host -back &apos;DarkRed&apos; -fore &apos;white&apos; &quot;Failed - $fullPath&quot;
                    }
                }
                else {
                    Write-Host &quot;Deleted - $fullPath&quot;
                }
            }
        }
    }
}
:regscan:

::========================================================================================================================================

:_color

if %_NCS% EQU 1 (
echo %esc%[%~1%~2%esc%[0m
) else (
%psc% write-host -back &apos;%1&apos; -fore &apos;%2&apos; &apos;%3&apos;
)
exit /b

:_color2

if %_NCS% EQU 1 (
echo %esc%[%~1%~2%esc%[%~3%~4%esc%[0m
) else (
%psc% write-host -back &apos;%1&apos; -fore &apos;%2&apos; &apos;%3&apos; -NoNewline; write-host -back &apos;%4&apos; -fore &apos;%5&apos; &apos;%6&apos;
)
exit /b

::========================================================================================================================================
:: Leave empty line below
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>软件推荐</category><category>IDM</category></item><item><title>UnityShaderGraph---深度缓冲区和顶点着色器</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-shen-du-huan-chong-qu-he-ding-dian-zhuo-se-qi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-shen-du-huan-chong-qu-he-ding-dian-zhuo-se-qi/</guid><description>学习深度缓冲区和顶点着色器</description><pubDate>Fri, 22 May 2026 17:58:10 GMT</pubDate><content:encoded>&lt;h1 id=&quot;深度缓冲区&quot;&gt;深度缓冲区&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#深度缓冲区&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;为了实现渲染管线判定物体的空间层级关系,由于系统无法仅凭色彩数据判断是否覆盖已有像素,深度缓冲(Depth Buffer)作为辅助缓冲区,又称之为Z缓存(z-buffer)&lt;/p&gt;
&lt;p&gt;这个用于作为第二存储位图,尺寸和帧缓冲区完全一致,但存储的是物体像素到摄像机的空间距离&lt;/p&gt;
&lt;p&gt;深度缓冲采用非线性映射存储0-1区间的数值,通过为近景物体分配更多数据位来实现高精度渲染&lt;/p&gt;
&lt;p&gt;在渲染物体时会绘制物体的深度值然后与深度缓冲区中的值进行比对这个过程就是深度测试(depth test),当绘制物体的深度值小于或等于缓冲区值时,新物体就会覆盖原有的物体,若绘制的是不透明物体还会更新缓冲区中的值,透明物体一般情况下不会写入深度数据&lt;/p&gt;
&lt;p&gt;然而这些不需要了解,因为这些比对操作由shadergraph自动完成&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260522192910972.webp&quot; alt=&quot;image-20260522192910972&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们需要关注这里面的这两个东西-----depth write(深度写入)和depth test(深度测试)&lt;/p&gt;
&lt;p&gt;深度写入功能决定在深度测试通过时,是否更新深度缓冲区数值,默认是auto模式,该模式会自动处理不透明物体并跳过透明物体&lt;/p&gt;
&lt;p&gt;而深度测试功能就是自定义新像素写入时的深度比较方式,系统默认采用L Equal模式也就是&lt;strong&gt;当前深度 ≤ 缓冲区深度&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一、Depth Write（深度写入）— 3 个选项&lt;/p&gt;
&lt;p&gt;控制是否将当前像素的深度值写入 &lt;strong&gt;Depth Buffer（深度缓冲区 / Z-Buffer）&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;选项&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;th&gt;典型应用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Auto（自动）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;根据渲染队列（Render Queue）自动决定&lt;/td&gt;&lt;td&gt;默认设置，不透明物体开启，透明物体关闭&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Force Enabled（强制开启）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;强制写入深度，无视队列类型&lt;/td&gt;&lt;td&gt;特殊透明物体需要参与深度测试、粒子软粒子&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Force Disabled（强制关闭）&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;强制不写入深度&lt;/td&gt;&lt;td&gt;纯透明物体、UI、特效、后处理&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;二、Depth Test（深度测试）— 8 个比较模式&lt;/p&gt;
&lt;p&gt;控制当前像素的深度值如何与 &lt;strong&gt;Depth Buffer 中已有的深度值&lt;/strong&gt; 进行比较，决定是否通过测试、是否渲染该像素&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;模式&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;数学含义&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;效果&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;典型应用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Less&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 &amp;#x3C; 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;比已有物体&lt;strong&gt;更近&lt;/strong&gt;才渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;标准不透明物体（默认）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Greater&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 &gt; 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;比已有物体&lt;strong&gt;更远&lt;/strong&gt;才渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;特殊效果，如&quot;只显示被遮挡部分&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;LEqual&lt;/strong&gt;(默认)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 ≤ 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;更近或&lt;strong&gt;相等&lt;/strong&gt;时渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;透明物体、避免 Z-Fighting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;GEqual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 ≥ 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;更远或&lt;strong&gt;相等&lt;/strong&gt;时渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;天空盒、远处背景&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Equal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 = 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;仅相等&lt;/strong&gt;时渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;特殊遮罩、Stencil 配合&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;NotEqual&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;当前深度 ≠ 缓冲区深度&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;不相等&lt;/strong&gt;时渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;排除特定深度区域&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Always&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;永远通过&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;无视深度&lt;/strong&gt;，总是渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;UI、全屏特效、Debug 显示&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Never&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;永远不通过&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;永远丢弃&lt;/strong&gt;，不渲染&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;占位、调试、特殊剔除&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;当然也可以启用材质覆盖 &lt;strong&gt;Allow material override&lt;/strong&gt;这样就可以在inspector窗口里对单个材质进行设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260522194748559.webp&quot; alt=&quot;image-20260522194748559&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而unity会在绘制完所有不透明物体后将整个深度纹理状态复制到相机深度纹理这样着色器就可以访问这个纹理了,不过这个深度纹理仅对透明着色器有意义,对于不透明着色器读取深度纹理时这个纹理会显示为灰色,因为深度纹理不记录透明物体的深度信息&lt;/p&gt;
&lt;h2 id=&quot;在urp中使用深度纹理&quot;&gt;在URP中使用深度纹理&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#在urp中使用深度纹理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果要在URP中使用深度纹理则需要启用这些文件里的Depth Texture(深度纹理)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260522200227723.webp&quot; alt=&quot;image-20260522200227723&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们新建一个无光照的shadergraph&lt;/p&gt;
&lt;p&gt;将surface type改为transparent 也就是透明,然后添加两个颜色节点------ForegroundColor(前景色)和BackgroundColor&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523110126447.webp&quot; alt=&quot;image-20260523110126447&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们添加SceneDepth节点,这个默认会使用当前渲染像素的屏幕坐标来采样深度纹理,无需手动输入任何参数&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523110325461.webp&quot; alt=&quot;image-20260523110325461&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Unity Shader Graph 的 &lt;strong&gt;Scene Depth&lt;/strong&gt; 节点提供三种 &lt;strong&gt;Sampling（采样模式）&lt;/strong&gt;，用于以不同方式解释深度缓冲区的值：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;采样模式&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Linear 01&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;返回线性深度值，范围 &lt;strong&gt;0 到 1&lt;/strong&gt;。0 对应相机的近裁剪面，1 对应远裁剪面。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Raw&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;返回深度缓冲区的&lt;strong&gt;原始非线性深度值&lt;/strong&gt;，范围同样为 0 到 1，但分布不是线性的（通常在近处精度高，远处精度低）。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Eye&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;将深度值转换为** Eye（视图/相机）空间距离**，单位为&lt;strong&gt;米&lt;/strong&gt;，表示从相机到该像素对应场景点的实际距离。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;在 Scene Depth 节点的上下文中，&quot;线性关系&quot;指的是 &lt;strong&gt;深度值与相机到物体的实际距离（Z 值）之间是否成正比&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;线性和非线性的区别&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;线性&lt;/strong&gt; = 深度值翻倍，实际距离也翻倍（成正比）&lt;br&gt;
&lt;strong&gt;非线性&lt;/strong&gt; = 深度值翻倍，实际距离不是翻倍（不成正比）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;模式&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;数学关系&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;直观理解&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Raw&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;非线性&lt;/strong&gt;（1/z 关系）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;近处精度极高，远处精度极低。同样的深度值变化，在近处代表的实际距离变化很小，在远处代表的实际距离变化很大。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Linear 01&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;线性&lt;/strong&gt;（归一化到 0-1）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;深度值与实际距离成正比，但被压缩到 0（近裁剪面）到 1（远裁剪面）之间。0.5 正好对应远近裁剪面中间的距离。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Eye&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;线性&lt;/strong&gt;（世界单位）&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;直接输出实际距离（米），0.5 就是 0.5 米，100 就是 100 米，没有任何归一化。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;而做物体轮廓描边效果可以使用Linear01&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523111230635.webp&quot; alt=&quot;image-20260523111230635&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们添加Lerp节点&lt;/p&gt;
&lt;p&gt;Lerp是线性插值(Linear Interpolation)的简称,指的是在两个数值之间做平滑过渡&lt;/p&gt;
&lt;p&gt;左侧的A 和B两个输入端口分别接收要混合的数值,T输入则控制混合权重,决定结果偏向A还是B,取值范围0-1&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如T=0.25时输出结果就是75%的A加上25%的B&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523112323787.webp&quot; alt=&quot;image-20260523112323787&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们将前景色ForegroundColor设置为绿色,BackgroundColor后景色设置为白色&lt;/p&gt;
&lt;p&gt;此时的材质显示的是白色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523125309976.webp&quot; alt=&quot;image-20260523125309976&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们让视角被这个白色方块遮挡这三个物体&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523125448422.webp&quot; alt=&quot;image-20260523125448422&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以看到①和②号显示为前景色,而③号为白色,说明深度纹理有效&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523131127007.webp&quot; alt=&quot;image-20260523131127007&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;调整透明度会影响绿色的明暗度,除了这个③号,这里有一个关键的决定性因素------&lt;strong&gt;surface type&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523131821930.webp&quot; alt=&quot;image-20260523131821930&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;若设置为Opaque就表明这个是不透明材质,若设置为Transparent就是透明材质&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523132305621.webp&quot; alt=&quot;image-20260523132305621&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们的③号就是用的Transparency的材质&lt;/p&gt;
&lt;p&gt;不透明材质的物品全部显示为前景色,例如我们将背景色设置为黄色就可以更明显的看出&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523133132264.webp&quot; alt=&quot;image-20260523133132264&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是我们若将背景物体扩大就很难分辨出来这几个方块的存在&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523133613445.webp&quot; alt=&quot;image-20260523133613445&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;尤其是在游戏窗口完全是一片绿色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523133742353.webp&quot; alt=&quot;image-20260523133742353&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时我们可以调整主摄像机的Clipping Planes&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523133823071.webp&quot; alt=&quot;image-20260523133823071&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在 Unity 中，&lt;strong&gt;Clipping Planes（裁剪平面）&lt;/strong&gt; 的两个值是：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;值&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;名称&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Near&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;近裁剪面&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;相机能看到的&lt;strong&gt;最近距离&lt;/strong&gt;。小于这个距离的物体不会被渲染&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Far&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;远裁剪面&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;相机能看到的&lt;strong&gt;最远距离&lt;/strong&gt;。大于这个距离的物体不会被渲染&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;如果我们将far改为25就可以看的更清楚了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523134142885.webp&quot; alt=&quot;image-20260523134142885&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;顶点着色器&quot;&gt;顶点着色器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#顶点着色器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;网格是由一个个顶点构成的,这些顶点就是网格各个角落的点,点与点形成了面,每一帧画面Unity都要读取顶点数据,计算这些顶点在屏幕上应该显示的具体位置,然后这些顶点最终呈现在屏幕上(感觉和老电视的示波器差不多),这个过程是通过一系列坐标变换实现的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523140205230.webp&quot; alt=&quot;image-20260523140205230&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;首先是从抽象的网格数据开始,这时顶点位置是相对于网格自身的原点来定义的,这个坐标系称之为对象空间(Object Space)&lt;/p&gt;
&lt;p&gt;根据物体的变化位置顶点被转换到世界空间,这时他们的位置是相对于场景的世界原点,然后根据摄像机的位置和参数设置,顶点会被转换到裁剪空间(clip space),此时的物体的坐标就是相对于屏幕的坐标(说人话就是跟皮影戏一样,要想看到皮影戏就必须确保屏幕上为皮影的图形分配位置)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523142321289.webp&quot; alt=&quot;image-20260523142321289&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然而不需要了解这种东西,shadergraph会帮我们自动运算处理(虽然要是写shader的话需要手搓)&lt;/p&gt;
&lt;p&gt;完成顶点着色器处理后网格数据会进行光栅化转化也就是把这些图形转换为一个一个的像素而片段着色器会对所有像素进行着色处理并最终呈现物体图像&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523143013205.webp&quot; alt=&quot;image-20260523143013205&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;回到Unity创建无光照shadergraph&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523143642395.webp&quot; alt=&quot;image-20260523143642395&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;之前我们都是直接用,这里讲讲这里的两个默认节点&lt;/p&gt;
&lt;h2 id=&quot;对于vertex顶点阶段&quot;&gt;对于Vertex（顶点阶段）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于vertex顶点阶段&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是 Shader 的&lt;strong&gt;顶点着色器&lt;/strong&gt;部分，负责处理模型的每个顶点：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输出端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;默认空间&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Position&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;顶点在 3D 空间中的坐标&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Object Space（模型本地空间）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Normal&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;顶点法线方向，用于光照计算&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Object Space&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tangent&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;顶点切线方向，用于法线贴图等&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Object Space&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Object Space（对象/模型空间）&lt;/strong&gt;：以模型自身原点为基准的坐标系。比如一个球体，球心就是 (0,0,0)，不管这个球在世界中放在哪里&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;对于fragment片元像素阶段&quot;&gt;对于Fragment（片元/像素阶段)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于fragment片元像素阶段&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这是 Shader 的&lt;strong&gt;片元着色器&lt;/strong&gt;部分，负责计算最终屏幕上每个像素的颜色。默认只暴露了一个：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Base Color&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;材质的基础颜色/漫反射颜色&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Shader Graph 自动帮你做了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;顶点位置变换&lt;/strong&gt;：把 Object Space 的 Position 自动转换到 Clip Space（裁剪空间），这样模型才能正确显示在屏幕上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;法线和切线&lt;/strong&gt;：保留在 Object Space，供后续光照计算使用（如果你需要 World Space 的法线，要自己加 &lt;code&gt;Transform&lt;/code&gt; 节点转换）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;创建波浪效果&quot;&gt;创建波浪效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建波浪效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523214422911.webp&quot; alt=&quot;image-20260523214422911&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们需要两个浮点数节点--wavespeed(波速,控制每个顶点上下移动的距离)还有wavestrength(波强度,控制顶点移动的距离&lt;/p&gt;
&lt;p&gt;我们需要使用顶点的世界位置作为偏移值,此时需要position位置节点来实现&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523215234524.webp&quot; alt=&quot;image-20260523215234524&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在 Unity Shader Graph 的 &lt;strong&gt;Position 节点&lt;/strong&gt;中，Space（空间）下拉菜单有 &lt;strong&gt;5 种设置&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;选项&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;中文含义&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Object&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;对象/模型空间&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;以模型自身原点为基准，模型移动时坐标不变&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;World&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;世界空间&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;以场景世界原点为基准，模型移动时坐标变化&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;View&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;视图/观察空间&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;以摄像机为基准，Z轴指向摄像机正前方&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Absolute World&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;绝对世界空间&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;类似 World，但不受 GPU Instancing 等变换影响（用于大规模地形等）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Tangential&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;切线空间&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;以顶点切线、副切线、法线构建的局部坐标系，常用于法线贴图&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里我们采用world就可以实现波浪网格在世界坐标系的无缝衔接&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523215722984.webp&quot; alt=&quot;image-20260523215722984&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;现在添加计时功能,使用time时间节点并乘以波浪速度参数,我们把wavespeed放到multiply的B点,这里是用来设置波浪滚动方向的步骤&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260523220842337.webp&quot; alt=&quot;image-20260523220842337&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在 Unity Shader Graph 中，&lt;strong&gt;Position 节点&lt;/strong&gt;用 &lt;strong&gt;Split 节点&lt;/strong&gt;分离后的四个输出是：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输出&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;R&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;X 坐标（红色通道）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;G&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Y 坐标（绿色通道）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;B&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Z 坐标（蓝色通道）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;W 分量（齐次坐标，通常为 1）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;然后用split分离节点分离position坐标的各个分量,如果只把x坐标分量叠加到时间参数上,波浪就会产生水平移动效果,如果使用z坐标分量波浪会往另一个方向水平移动也就是垂直之前的方向&lt;/p&gt;
&lt;p&gt;这里若要实现对角线移动效果.需要将x和z坐标分量通过add节点相加,然后加上刚才相乘的值&lt;/p&gt;
&lt;p&gt;Unity Shader Graph 中的 &lt;strong&gt;Sine 节点&lt;/strong&gt; 是一个基础的数学三角函数节点，用于生成正弦波形。以下是它的核心要点：&lt;/p&gt;
&lt;p&gt;基本功能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;输入&lt;/strong&gt;：接受一个浮点值（通常理解为&lt;strong&gt;弧度&lt;/strong&gt; &lt;code&gt;radians&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出&lt;/strong&gt;：返回该弧度的正弦值，范围在 &lt;code&gt;[-1, 1]&lt;/code&gt; 之间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数学公式&lt;/strong&gt;：&lt;code&gt;output = sin(input)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常见用途&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;场景&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;周期性动画&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;让颜色、位置、UV 等随时间波动（如闪烁、呼吸效果）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;波形生成&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;创建波浪形位移、水面波纹&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;遮罩/过渡&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;利用 &lt;code&gt;[-1, 1]&lt;/code&gt; 的范围做软边缘或渐变控制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;配合 Time 节点&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;Time → Sine&lt;/code&gt; 是最经典的自动动画组合&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
  &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528172806668.webp&quot; alt=&quot;image-20260528172806668&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后把计算结果输入正弦函数节点得到y轴偏移量,也就是这样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528172655774.webp&quot; alt=&quot;image-20260528172655774&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528173008616.webp&quot; alt=&quot;image-20260528173008616&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后再用波浪强度wavestrength参数调节偏移量大小,然后将sine输出值和wavestrength相乘&lt;/p&gt;
&lt;p&gt;然后新建一个Vector3节点,保持x和z分量为0,在y轴设置偏移值就得到了偏移向量&lt;/p&gt;
&lt;p&gt;并添加一个position节点,选择object 对象空间坐标系,并用add节点加上我们刚才的y轴的偏移量,然后将结果连接到位置图形的输出端口&lt;/p&gt;
&lt;p&gt;考虑到节点比较多移动起来比较困难,我们可以给节点分组,先用左键选中要分组的节点然后右键点击&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528180829070.webp&quot; alt=&quot;image-20260528180829070&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后取个名字就实现分组了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528180927809.webp&quot; alt=&quot;image-20260528180927809&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528174244354.webp&quot; alt=&quot;image-20260528174244354&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们像之前那样添加基础色color节点和纹理texture节点来控制纹理和颜色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528175134336.webp&quot; alt=&quot;image-20260528175134336&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528175509952.webp&quot; alt=&quot;image-20260528175509952&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这么看可能不是很明显,我将这个plane对象旋转90度就可以看的更清了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528175714069.webp&quot; alt=&quot;image-20260528175714069&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;实现更精细的波浪&quot;&gt;实现更精细的波浪&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#实现更精细的波浪&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们旋转前三角形的边缘是与波浪运动方向保持一致,所以看起来不是太明显,不过仍然是有瑕疵的&lt;/p&gt;
&lt;p&gt;为避免这种情况可以使用高精度网格模型,就是那种好几千个面的模型,这个相当于是将面切成大量的三角形使运动的时候的棱角感不是太明显,但是太吃配置了,如果场景里有大量这样的模型会消耗大量的GPU资源&lt;/p&gt;
&lt;p&gt;还有一种方法是采用曲面细分技术,但是URP没有曲面细分,只有HDRP才有&lt;/p&gt;
&lt;p&gt;因为这个是另一种渲染管,所以我们简单提一下吧&lt;/p&gt;
&lt;p&gt;我们需要在这个面板找到HDRP特有的Tesseilation曲面细分功能&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tessellation（曲面细分）在 HDRP（High Definition Render Pipeline）中是一种&lt;strong&gt;几何层面的细节增强技术&lt;/strong&gt;，它允许在 GPU 上动态细分三角形网格，从而在近距离观察时呈现更平滑、更精细的表面，而无需增加原始模型的多边形数量&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528181451440.webp&quot; alt=&quot;image-20260528181451440&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;启用这个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528181604233.webp&quot; alt=&quot;image-20260528181604233&quot; style=&quot;zoom: 80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时Vertex会新增加两个接口&lt;/p&gt;
&lt;p&gt;Tessellation Factor（细分因子）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;作用&lt;/strong&gt;：控制&lt;strong&gt;细分程度&lt;/strong&gt;——每个原始三角形被切成多少个小三角形&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;值&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;效果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;不细分，保持原始网格&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;2~5&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;轻度细分，适合中距离&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;10+&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;重度细分，极近距离特写&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;理论上不渲染（实际应避免）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Tessellation Displacement（细分置换）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;作用&lt;/strong&gt;：控制&lt;strong&gt;细分后顶点的位移量&lt;/strong&gt;——基于高度图把顶点沿着法线方向&quot;推出去&quot;或&quot;拉进来&quot;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;输入&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;高度图（Height Map）&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;最常用，灰度图，白色凸起、黑色凹陷&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;位移强度&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;通常先对高度图做 Remap/Scale，再接入&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;无输入&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;只做平滑细分（Phong Tessellation），不位移&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;然后我们将最开始的这个位置节点设置从世界坐标(world)切换为绝对世界坐标(absolute world),这个是专门用来生成地形什么的用的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528182406531.webp&quot; alt=&quot;image-20260528182406531&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们删除掉这个add和position节点,直接用y轴偏移量连接Tessellation Displacement细分置换&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E6%B7%B1%E5%BA%A6%E7%BC%93%E5%86%B2%E5%8C%BA%E5%92%8C%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8/image-20260528182615094.webp&quot; alt=&quot;image-20260528182615094&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时的Tessellation Factor 曲面因子值默认为1,也就是正常情况,当我们增大x的值就会通过增加顶点来细分网格&lt;/p&gt;
&lt;p&gt;我们可以增加这个x的数值使网格的面数增加,细分系数最高可达硬件上限64&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>UnityShaderGraph---了解ShaderGraph-纹理和UV以及Alpha相关</title><link>https://huyangpahuo.vercel.app/posts/unityshadergraph-liao-jie-shadergraph-wen-li-he-uv-yi-ji-alpha-xiang-guan/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unityshadergraph-liao-jie-shadergraph-wen-li-he-uv-yi-ji-alpha-xiang-guan/</guid><description>纹理和UV以及Alpha相关</description><pubDate>Thu, 21 May 2026 17:52:23 GMT</pubDate><content:encoded>&lt;h1 id=&quot;shadergraph是unity提供的shader可视化&quot;&gt;shadergraph是unity提供的shader可视化&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#shadergraph是unity提供的shader可视化&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;若你学过blender的渲染,可能学起来会更轻松&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522133437385.webp&quot; alt=&quot;image-20260522133437385&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;旧版本unity使用的是BuiltIn渲染管,新版本普遍使用URP(Universal Render Pipeline，通用渲染管线),因为这个支持多设备,当然要是制作纯PC端也可以使用HDRP&lt;/p&gt;
&lt;h2 id=&quot;urp-shader-graph-的-7-种模板类型&quot;&gt;URP Shader Graph 的 7 种模板类型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#urp-shader-graph-的-7-种模板类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-lit-shader-graph光照着色器图&quot;&gt;1. &lt;strong&gt;Lit Shader Graph（光照着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-lit-shader-graph光照着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：标准 PBR 材质，最常用的 3D 着色器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：完整的光照响应，支持主光源、附加光源、阴影、环境光&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Normal、Metallic、Smoothness、Ambient Occlusion、Emission、Alpha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：角色、道具、建筑、绝大多数 3D 场景物体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：中等，适合大多数平台&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-unlit-shader-graph无光照着色器图&quot;&gt;2. &lt;strong&gt;Unlit Shader Graph（无光照着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-unlit-shader-graph无光照着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：不受任何光照影响的基础着色&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：性能开销最低，颜色完全由 shader 决定，不受场景灯光影响&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Alpha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;UI 元素和界面&lt;/li&gt;
&lt;li&gt;粒子特效（火焰、魔法效果）&lt;/li&gt;
&lt;li&gt;全息投影、扫描线效果&lt;/li&gt;
&lt;li&gt;天空盒、背景&lt;/li&gt;
&lt;li&gt;2D 游戏中的不受光物体&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：最低，移动平台首选&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-sprite-custom-lit-shader-graph精灵自定义光照着色器图&quot;&gt;3. &lt;strong&gt;Sprite Custom Lit Shader Graph（精灵自定义光照着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-sprite-custom-lit-shader-graph精灵自定义光照着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：2D Sprite 的&lt;strong&gt;自定义光照&lt;/strong&gt;着色器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;基于 Sprite Lit，但提供更多自定义控制&lt;/li&gt;
&lt;li&gt;可以自定义光照计算方式，不完全遵循 URP 2D 灯光系统&lt;/li&gt;
&lt;li&gt;支持更灵活的光照交互&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Normal、Alpha，以及自定义光照相关输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;需要特殊光照效果的 2D 游戏&lt;/li&gt;
&lt;li&gt;风格化 2D 渲染（如手绘风格、水彩风格）&lt;/li&gt;
&lt;li&gt;需要自定义阴影或光照模型的 2D 项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：需要配合 2D Renderer 使用&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-sprite-unlit-shader-graph精灵无光照着色器图&quot;&gt;4. &lt;strong&gt;Sprite Unlit Shader Graph（精灵无光照着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-sprite-unlit-shader-graph精灵无光照着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：不受光照的 2D Sprite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;专为 SpriteRenderer 优化&lt;/li&gt;
&lt;li&gt;不响应任何 2D 或 3D 灯光&lt;/li&gt;
&lt;li&gt;支持 Sprite 的 Sorting Layer 和 Order in Layer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Alpha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;UI 图片和图标&lt;/li&gt;
&lt;li&gt;2D 游戏背景&lt;/li&gt;
&lt;li&gt;不受光影响的 2D 角色或物体&lt;/li&gt;
&lt;li&gt;像素艺术游戏&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：2D 渲染中最低开销&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-sprite-lit-shader-graph精灵光照着色器图&quot;&gt;5. &lt;strong&gt;Sprite Lit Shader Graph（精灵光照着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5-sprite-lit-shader-graph精灵光照着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：受 URP 2D 灯光系统影响的 Sprite&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;响应 URP 的 2D Lights（Point Light 2D、Global Light 2D 等）&lt;/li&gt;
&lt;li&gt;支持法线贴图产生凹凸感&lt;/li&gt;
&lt;li&gt;支持 2D 阴影&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Normal、Alpha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;需要光影的 2D 平台游戏&lt;/li&gt;
&lt;li&gt;俯视角 2D 游戏（如《哈迪斯》风格）&lt;/li&gt;
&lt;li&gt;2.5D 游戏&lt;/li&gt;
&lt;li&gt;任何需要动态光照的 2D 项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：URP Asset 必须使用 &lt;strong&gt;2D Renderer&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-decal-shader-graph贴花着色器图&quot;&gt;6. &lt;strong&gt;Decal Shader Graph（贴花着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6-decal-shader-graph贴花着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：在现有几何体表面投影纹理&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;使用&lt;strong&gt;投影渲染&lt;/strong&gt;，不创建新几何体&lt;/li&gt;
&lt;li&gt;可以贴合任意表面形状&lt;/li&gt;
&lt;li&gt;支持法线贴花（改变表面法线）&lt;/li&gt;
&lt;li&gt;支持基于深度的贴花（Decal Projector）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：Base Color、Normal、Metallic、Smoothness、Ambient Occlusion、Emission、Alpha&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;弹孔和弹痕&lt;/li&gt;
&lt;li&gt;血迹、泥渍&lt;/li&gt;
&lt;li&gt;路面标记和涂鸦&lt;/li&gt;
&lt;li&gt;墙面海报&lt;/li&gt;
&lt;li&gt;环境细节增强（如角落积尘）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;要求&lt;/strong&gt;：需要 Decal Renderer Feature 或在 URP Asset 中启用 Decal 支持&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;7-fullscreen-shader-graph全屏着色器图&quot;&gt;7. &lt;strong&gt;Fullscreen Shader Graph（全屏着色器图）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#7-fullscreen-shader-graph全屏着色器图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用途&lt;/strong&gt;：全屏后处理效果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;渲染覆盖整个屏幕的四边形&lt;/li&gt;
&lt;li&gt;可以访问场景颜色、深度、法线等纹理&lt;/li&gt;
&lt;li&gt;用于&lt;strong&gt;后处理效果（Post-Processing）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;在 URP 中通常配合 &lt;strong&gt;Fullscreen Pass Renderer Feature&lt;/strong&gt; 使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Master Stack 输出&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;Base Color（输出到屏幕）&lt;/li&gt;
&lt;li&gt;可以采样 &lt;code&gt;_BlitTexture&lt;/code&gt;（场景颜色）、&lt;code&gt;_CameraDepthTexture&lt;/code&gt; 等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;全屏特效（故障艺术 Glitch、老电影效果）&lt;/li&gt;
&lt;li&gt;边缘检测、描边效果&lt;/li&gt;
&lt;li&gt;颜色分级、色调映射自定义&lt;/li&gt;
&lt;li&gt;水面反射扭曲&lt;/li&gt;
&lt;li&gt;热扭曲效果&lt;/li&gt;
&lt;li&gt;屏幕空间雾效&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注意&lt;/strong&gt;：这是 URP 12+（Unity 2021.2+）引入的，用于替代之前的后处理方式&lt;/li&gt;
&lt;/ul&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522135119433.webp&quot; alt=&quot;image-20260522135119433&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;保存资源并将材质添加到3d物体上&lt;/p&gt;
&lt;p&gt;这里我们可以在colorexample里制作颜色节点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522135542916.webp&quot; alt=&quot;image-20260522135542916&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;将这个与刚才的fragment相连并调整颜色并exposed暴露给inspector窗口&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522135742866.webp&quot; alt=&quot;image-20260522135742866&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;然后我们可以在这个shadergraph上创建材质的副本也就是Material&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522140030711.webp&quot; alt=&quot;image-20260522140030711&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在inspector里设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522140111209.webp&quot; alt=&quot;image-20260522140111209&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;纹理和uv坐标&quot;&gt;纹理和UV坐标&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#纹理和uv坐标&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522140848527.webp&quot; alt=&quot;image-20260522140848527&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Texture纹理本质上是图片,所以我们可以去itch或者unity资源商店下载&lt;/p&gt;
&lt;p&gt;而UV就是 &lt;strong&gt;Texture Coordinates（纹理坐标）&lt;/strong&gt;，用于告诉引擎&lt;strong&gt;如何把 2D 图片贴到 3D 模型表面&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为 3D 模型已经有 &lt;strong&gt;X、Y、Z&lt;/strong&gt; 表示三维空间位置了，所以纹理坐标用 &lt;strong&gt;U、V&lt;/strong&gt; 来区分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;U&lt;/strong&gt; → 对应 2D 图片的 &lt;strong&gt;水平方向（X）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;V&lt;/strong&gt; → 对应 2D 图片的 &lt;strong&gt;垂直方向（Y）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;简单说：&lt;strong&gt;UV 就是 3D 模型的&quot;皮肤展开图&quot;坐标&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;unity不允许直接将纹理节点连到BaseColor输出,因为要求必须明确指定用于纹理采样的UV坐标&lt;/p&gt;
&lt;p&gt;这里需要使用到SampleTexture2D采样节点,往节点图中添加节点有两种方式:&lt;/p&gt;
&lt;p&gt;①直接右键菜单选择节点并输入sampletexture2d找到并回车&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522142207325.webp&quot; alt=&quot;image-20260522142207325&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;② 按空格键调出节点创建面板并输入sampletexture2d找到并回车&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522142432822.webp&quot; alt=&quot;image-20260522142432822&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后得到这个东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522142622067.webp&quot; alt=&quot;image-20260522142622067&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;左侧接口用于接收纹理输入&lt;/p&gt;
&lt;p&gt;对于图片模糊的可以设置为point no filter并apply&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522142920299.webp&quot; alt=&quot;image-20260522142920299&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;此时就非常清晰了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522143326824.webp&quot; alt=&quot;image-20260522143326824&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	Unity 中 Texture 的 &lt;strong&gt;Filter Mode（过滤模式）&lt;/strong&gt; 决定了当纹理被放大或缩小时，引擎如何采样像素颜色。三种模式如下：&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;三种-filter-mode&quot;&gt;三种 Filter Mode&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三种-filter-mode&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-point点过滤--最近邻&quot;&gt;1. &lt;strong&gt;Point（点过滤 / 最近邻）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-point点过滤--最近邻&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：直接取最近的像素颜色，不做任何插值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：边缘锐利，出现明显的像素块（Pixelated）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：最快，计算量最小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;像素艺术游戏（Pixel Art）&lt;/li&gt;
&lt;li&gt;复古风格渲染&lt;/li&gt;
&lt;li&gt;UI 中需要清晰像素边界的图标&lt;/li&gt;
&lt;li&gt;低分辨率纹理刻意保留块状感&lt;/li&gt;
&lt;li&gt;数据纹理（如 ID 贴图、索引贴图，不能插值）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-bilinear双线性过滤&quot;&gt;2. &lt;strong&gt;Bilinear（双线性过滤）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-bilinear双线性过滤&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：在纹理的 &lt;strong&gt;u、v 两个方向&lt;/strong&gt; 各做一次线性插值，综合 4 个相邻像素&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：过渡平滑，但近距离看仍有些模糊&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：中等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;大多数 3D 游戏的基础纹理&lt;/li&gt;
&lt;li&gt;需要平滑过渡但不需要极致清晰的场景&lt;/li&gt;
&lt;li&gt;移动端性能与质量的平衡选择&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-trilinear三线性过滤&quot;&gt;3. &lt;strong&gt;Trilinear（三线性过滤）&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-trilinear三线性过滤&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;原理&lt;/strong&gt;：在 &lt;strong&gt;Bilinear 基础上增加 Mipmap 层级之间的插值&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;先对相邻两个 Mipmap 层级分别做 Bilinear&lt;/li&gt;
&lt;li&gt;再对两个层级的结果做线性插值&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果&lt;/strong&gt;：Mipmap 切换时过渡最平滑，无突兀跳变&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能&lt;/strong&gt;：最高，比 Bilinear 多一次插值计算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;高质量 3D 渲染&lt;/li&gt;
&lt;li&gt;第一/第三人称视角中纹理远近变化明显的场景&lt;/li&gt;
&lt;li&gt;需要消除 Mipmap 边界闪烁的情况&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;而左侧的UV坐标 unity会自动提供一个UV0,通常不需要手动指定UV坐标&lt;/p&gt;
&lt;p&gt;右侧的最上面的RGBA是RGBA输出全通道,包含纹理的全部色彩信息&lt;/p&gt;
&lt;p&gt;其余的R,G,B,A分别指的是红色,绿色,蓝色,和阿尔法透明通道&lt;/p&gt;
&lt;h2 id=&quot;将纹理和基础色相混合&quot;&gt;将纹理和基础色相混合&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#将纹理和基础色相混合&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个可以使用乘法节点器&lt;/p&gt;
&lt;p&gt;这个会将左侧的两个红色通道的值相乘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522144244046.webp&quot; alt=&quot;image-20260522144244046&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;大概这个样子&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522144507211.webp&quot; alt=&quot;image-20260522144507211&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后你就会看到我们的箱子实现了,这就是所谓的游戏贴图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522144918734.webp&quot; alt=&quot;image-20260522144918734&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;控制滚动方向&quot;&gt;控制滚动方向&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#控制滚动方向&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522145143923.webp&quot; alt=&quot;image-20260522145143923&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;拖入刚才创建的vector2节点,将默认值改为(1,0),并加入Time节点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522145407847.webp&quot; alt=&quot;image-20260522145407847&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;time节点在着色器动画制作中很实用,可以提供多个不同的时间参数,最常用的就是Time参数,该数值表示场景加载后经过的秒数&lt;/p&gt;
&lt;p&gt;将滚动速度scrollvelocity和时间Time相乘后最终会得到一个随时间推移持续朝同一方向增长的向量,初始滚动速度越大,其增长速度就越快&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522145916584.webp&quot; alt=&quot;image-20260522145916584&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个偏移向量将被应用于网格的默认UV坐标&lt;/p&gt;
&lt;p&gt;我们需要添加一个叫做Tiling And Offset(平铺与偏移)来实现偏移向量的应用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522150746404.webp&quot; alt=&quot;image-20260522150746404&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时就会实现贴图的滚动,此时启动游戏就可以看到材质的滚动了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522151146892.webp&quot; alt=&quot;image-20260522151146892&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;透明度和alpha通道&quot;&gt;透明度和Alpha通道&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#透明度和alpha通道&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;透明物体的渲染逻辑和不透明物体存在本质差异&lt;/p&gt;
&lt;p&gt;出于渲染性能unity在渲染不透明物体时,通常采用&lt;strong&gt;从近到远&lt;/strong&gt;的绘制顺序,近物遮挡机制可以有效提升提升渲染效率&lt;/p&gt;
&lt;p&gt;对于透明物体需要根据Alpha值与背景物体进行颜色混合即Alpha混合透明机制,首先必须完成所有不透明物体的渲染才能进行后续的颜色计算,对于shader需要手动设置渲染优先级,数值越小渲染优先级越高,而shadergraph会自动处理顺序,采用&lt;strong&gt;从远到近&lt;/strong&gt;的渲染顺序,距离最远的物体会优先绘制,而靠近摄像机的物体则后绘制&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522152723034.webp&quot; alt=&quot;image-20260522152723034&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于节点图采用的是不透明渲染模式,我们需要做一些调整&lt;/p&gt;
&lt;p&gt;将Fragment的surface type表面类型改为transparent透明&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522153226862.webp&quot; alt=&quot;image-20260522153226862&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于输出的有multiply输出的有四个值,光学三原色和阿尔法透明值,我们的base color只接受了三原色,此时需要split组件将输出结果分离并提取出来alpha值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522153541210.webp&quot; alt=&quot;image-20260522153541210&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们然后创建材质并修改阿尔法值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522154354937.webp&quot; alt=&quot;image-20260522154354937&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;alpha裁剪&quot;&gt;Alpha裁剪&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#alpha裁剪&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这里首先换一张类似的贴图,然后打开alpha clipping阿尔法裁剪&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522170848852.webp&quot; alt=&quot;image-20260522170848852&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后制作material,修改阿尔法值并附加到cube上得到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522171122042.webp&quot; alt=&quot;image-20260522171122042&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后添加一个浮点类型节点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522171246685.webp&quot; alt=&quot;image-20260522171246685&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522171657427.webp&quot; alt=&quot;image-20260522171657427&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522171902519.webp&quot; alt=&quot;image-20260522171902519&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;dither抖动纹理&quot;&gt;Dither抖动纹理&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dither抖动纹理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;添加dither节点,因为如果我们直接用脚本控制一个物体逐渐消失会出现色块不均匀消失的情况&lt;/p&gt;
&lt;p&gt;Unity Shader Graph 的 &lt;strong&gt;Dither（抖动）节点&lt;/strong&gt; 用于在屏幕空间应用&lt;strong&gt;有序抖动（Ordered Dithering）&lt;/strong&gt;，核心作用是通过引入可控噪声来&lt;strong&gt;随机化量化误差&lt;/strong&gt;，从而避免色带（Color Banding）等大面积图案问题&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;端口&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;方向&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;类型&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;In&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输入&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;动态矢量&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输入值（通常连接 Alpha 或颜色值）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Screen Position&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输入&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Vector 4&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;屏幕坐标，用于确定抖动图案的平铺位置。默认绑定屏幕空间坐标，也可连接 UV 等自定义坐标&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Out&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;输出&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;动态矢量&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;抖动后的输出值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522174312941.webp&quot; alt=&quot;image-20260522174312941&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样我们改变透明度的时候就会有那种点状消失的效果&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522174004488.webp&quot; alt=&quot;image-20260522174004488&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个不太明显,换一个纹理就很直观了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/ShaderGraph/UnityShaderGraph---%E4%BA%86%E8%A7%A3ShaderGraph-%E7%BA%B9%E7%90%86%E5%92%8CUV%E4%BB%A5%E5%8F%8AAlpha%E7%9B%B8%E5%85%B3/image-20260522174632318.webp&quot; alt=&quot;image-20260522174632318&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>ShaderGraph</category></item><item><title>Unity-Splines工具</title><link>https://huyangpahuo.vercel.app/posts/unity-splines-gong-ju/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unity-splines-gong-ju/</guid><description>第一次接触Splines工具</description><pubDate>Tue, 19 May 2026 12:35:10 GMT</pubDate><content:encoded>&lt;h1 id=&quot;尝试splines制作卡牌游戏&quot;&gt;尝试splines制作卡牌游戏&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#尝试splines制作卡牌游戏&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;安装splines&quot;&gt;安装Splines&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装splines&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Unity 的 &lt;strong&gt;Splines 工具&lt;/strong&gt; 是一套用于创建、编辑和使用平滑曲线的内置系统，主要用于路径动画、物体运动轨迹、程序化生成等场景&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519123849320.webp&quot; alt=&quot;image-20260519123849320&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519124144305.webp&quot; alt=&quot;image-20260519124144305&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519125122873.webp&quot; alt=&quot;image-20260519125122873&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选取三个点,并设成对称位置,像使用PS的钢笔工具一样拉成一条曲线&lt;/p&gt;
&lt;p&gt;然后使用移动工具,点击中间的那个点并点击splines工具,选择Bezier(贝塞尔曲线)里的Mirrored&lt;/p&gt;
&lt;h2 id=&quot;1-bezier-切线模式tangent-modes&quot;&gt;1. Bezier 切线模式（Tangent Modes）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-bezier-切线模式tangent-modes&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;当 Knot 的 Tangent Mode 设为 &lt;strong&gt;Bezier&lt;/strong&gt; 后，可以进一步选择三种 Bezier 子模式&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;模式&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;行为&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Mirrored&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;In/Out 切线&lt;strong&gt;方向相反、长度相等&lt;/strong&gt;。移动一侧切线，另一侧同步镜像变化。Knot 自身始终朝向 Out 切线方向。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;需要平滑对称曲线（如道路、管道）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Continuous&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;In/Out 切线&lt;strong&gt;方向相反、长度独立&lt;/strong&gt;。方向保持 180° 对齐，但可以分别调整两侧长度。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;需要一侧曲率强、一侧曲率弱的过渡&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Broken&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;In/Out 切线&lt;strong&gt;完全独立&lt;/strong&gt;，方向和长度均可自由调整，互不影响。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;需要尖锐转角或不对称形状&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;关键细节&quot;&gt;关键细节&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关键细节&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Knot 朝向&lt;/strong&gt;：在 Mirrored 和 Continuous 模式下，Knot 的旋转始终指向其 &lt;strong&gt;Out&lt;/strong&gt; 切线方向。如果你旋转 Knot，切线会跟着旋转；如果你移动切线，Knot 会自动调整朝向以指向 Out 切线&lt;/p&gt;
&lt;p&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;设置时的对齐基准&lt;/strong&gt;：通过 API &lt;code&gt;SetTangentMode(int index, TangentMode mode, BezierTangent main = BezierTangent.Out)&lt;/code&gt; 设置时，第三个参数 &lt;code&gt;main&lt;/code&gt; 决定以哪一侧切线为基准进行对齐。默认以 &lt;strong&gt;Out&lt;/strong&gt; 为准，也可以指定为 &lt;strong&gt;In&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;2-in--out-切线&quot;&gt;2. In / Out 切线&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-in--out-切线&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;每个 Knot 有两条切线&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;In Tangent&lt;/strong&gt;：定义&lt;strong&gt;进入&lt;/strong&gt;该 Knot 的线段的曲率&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Out Tangent&lt;/strong&gt;：定义&lt;strong&gt;离开&lt;/strong&gt;该 Knot 的线段的曲率&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 Element Inspector 中可以直接调整：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Magnitude（长度）&lt;/strong&gt;：影响切线对曲线的影响力，值越大曲线越&quot;被拉扯&quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direction（方向）&lt;/strong&gt;：切线从 Knot 指出的方向&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;3-reverse-spline-flow反转曲线流向&quot;&gt;3. Reverse Spline Flow（反转曲线流向）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-reverse-spline-flow反转曲线流向&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个功能会&lt;strong&gt;整体反转 Spline 的方向&lt;/strong&gt;，产生以下效果&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;变化项&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;Knot 索引反转&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;第一个 Knot 变成最后一个，最后一个变成第一个&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;In/Out 切线互换&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;对于 Bezier 模式的 Knot，原来的 In 切线变成 Out 切线，反之亦然&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;视觉箭头反向&lt;/strong&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Scene 视图上的流向箭头全部反向&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;沿X轴拖动这个黄色的圈改变曲线形状直到形成一个好看的弧度,然后搭载相关脚本&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519130358327.webp&quot; alt=&quot;image-20260519130358327&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后将其移动到界面的底部充当手牌区域,启动游戏,按下空格键生成卡牌&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519141053911.webp&quot; alt=&quot;image-20260519141053911&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后实现自定义&lt;strong&gt;ScriptableObject&lt;/strong&gt; 对象&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[CreateAssetMenu(menuName = &quot;Data/CardData&quot;)]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Splines/Unity-Splines%E5%B7%A5%E5%85%B7/image-20260519150536724.webp&quot; alt=&quot;image-20260519150536724&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category><category>Splines</category></item><item><title>flutter---网络请求</title><link>https://huyangpahuo.vercel.app/posts/flutter-wang-luo-qing-qiu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-wang-luo-qing-qiu/</guid><description>本篇了解dio网络请求</description><pubDate>Sun, 17 May 2026 14:09:42 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来学学flutter的网络请求&quot;&gt;今天来学学flutter的网络请求&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来学学flutter的网络请求&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;dio插件的使用&quot;&gt;Dio插件的使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dio插件的使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dio&lt;/code&gt; 是 Flutter 里最常用的 HTTP 网络请求库之一，很多项目都会用它替代原生的 &lt;code&gt;http&lt;/code&gt; 包，因为它功能更完整&lt;/p&gt;
&lt;p&gt;(话说看到这个Dio我就想起了某个埃及艳妇 &lt;font color=&quot;#FFD700&quot;&gt;狗头狗头狗头&lt;/font&gt;)&lt;/p&gt;
&lt;p&gt;OK回归正题&lt;/p&gt;
&lt;p&gt;首先根目录执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter pub add dio
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;打开你的&lt;strong&gt;pubspec.yaml&lt;/strong&gt;文件&lt;/p&gt;
&lt;p&gt;可以看到这个&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;yaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;flutter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;sdk&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; flutter

  &lt;span class=&quot;token comment&quot;&gt;# The following adds the Cupertino Icons font to your application.&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;# Use with the CupertinoIcons class for iOS style icons.&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;cupertino_icons&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ^1.0.8
  &lt;span class=&quot;token key atrule&quot;&gt;dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ^5.9.2     &lt;span class=&quot;token comment&quot;&gt;#dio下载完成&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;基本使用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dio().get(地址).then().catchError()&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;HomePage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;HomePage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;HomePage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;HomePage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_HomePageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _HomePageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;HomePage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; text &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点击获取数据&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://genshin.hoyoverse.com/en/&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      text &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;原神网页&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SingleChildScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              mainAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;ElevatedButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; getData&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;获取网页&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

                &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

                &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; textAlign&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextAlign&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      floatingActionButton&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FloatingActionButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; getData&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Icon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Icons&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;refresh&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260517163247875.webp&quot; alt=&quot;image-20260517163247875&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;h2 id=&quot;封装dio工具&quot;&gt;封装Dio工具&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#封装dio工具&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260614195619480.webp&quot; alt=&quot;image-20260614195619480&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;建立连接 → 发送数据 → 等待服务器返回&lt;br&gt;
↑           ↑             ↑&lt;br&gt;
connect     send        receive&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 创建Dio实例&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 基础地址&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connectTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 连接超时,类型为Duration&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sendTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 发送超时,类型为Duration&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;receiveTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 响应超时,类型为Duration&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以创建Dio工具类和实例对象,但是这种写法较为繁琐&lt;/p&gt;
&lt;h3 id=&quot;使用级操作符&quot;&gt;使用“..”级操作符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用级操作符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;作用是对同一个对象连续调用多个属性或方法时，不需要反复写对象名&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 创建Dio实例&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 基础地址&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connectTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 连接超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sendTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 发送超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;receiveTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 响应超时,类型为Duration&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// ❌ 不用级联：重复写对象名&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; buffer &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StringBuffer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
buffer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Hello&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
buffer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
buffer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;World&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; buffer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// ✅ 用级联：链式调用，更简洁&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;StringBuffer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Hello&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;World&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;使用baseoptions&quot;&gt;使用BaseOptions&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用baseoptions&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;flutter 的 &lt;code&gt;BaseOptions&lt;/code&gt; 是 &lt;strong&gt;Dio&lt;/strong&gt; 网络库中的核心配置类，用于定义全局请求的基础参数。它本身不是 Flutter SDK 的一部分，而是来自 &lt;code&gt;dio&lt;/code&gt; 包&lt;/p&gt;
&lt;p&gt;&lt;code&gt;BaseOptions&lt;/code&gt; 封装了所有 HTTP 请求的&lt;strong&gt;默认配置&lt;/strong&gt;，创建 Dio 实例时传入，后续所有请求都会继承这些基础参数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BaseOptions&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      baseUrl&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://github.com/&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      connectTimeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      sendTimeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      receiveTimeout&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;dio拦截器interceptors&quot;&gt;Dio拦截器(Interceptors)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dio拦截器interceptors&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;拦截器是 Dio 的核心机制，允许你在&lt;strong&gt;请求发出前&lt;/strong&gt;和&lt;strong&gt;响应返回后&lt;/strong&gt;插入自定义逻辑，实现统一的日志、鉴权、错误处理、缓存等&lt;/p&gt;
&lt;p&gt;Flutter 里的 &lt;code&gt;Dio&lt;/code&gt; 拦截器（&lt;code&gt;Interceptors&lt;/code&gt;）主要用于&lt;strong&gt;统一处理请求、响应、错误&lt;/strong&gt;，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动添加 Token&lt;/li&gt;
&lt;li&gt;打印网络日志&lt;/li&gt;
&lt;li&gt;刷新 Token&lt;/li&gt;
&lt;li&gt;统一错误处理&lt;/li&gt;
&lt;li&gt;请求加密/解密&lt;/li&gt;
&lt;li&gt;Loading 状态管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dio 的拦截器语法核心是继承 &lt;code&gt;Interceptor&lt;/code&gt;，然后重写三个方法：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;onRequest()
onResponse()
onError()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;三个阶段执行顺序&quot;&gt;三个阶段执行顺序&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三个阶段执行顺序&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;一次请求：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dio.get()
    |
    ↓
onRequest()
    |
    ↓
服务器
    |
    ↓
onResponse()
    |
    ↓
业务代码
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果失败：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dio.get()
    |
    ↓
onRequest()
    |
    ↓
服务器
    |
    ↓
onError()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;基本结构&quot;&gt;基本结构&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#基本结构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;先导入：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;创建 Dio：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;添加拦截器：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;MyInterceptor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;定义拦截器：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyInterceptor&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Interceptor&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;  

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onRequest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;RequestOptions&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;RequestInterceptorHandler&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请求地址: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;uri&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onResponse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;ResponseInterceptorHandler&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;响应数据: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;onError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;DioException&lt;/span&gt; err&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;ErrorInterceptorHandler&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请求失败: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;err&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;message&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;handler-三种操作&quot;&gt;handler 三种操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#handler-三种操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;request&quot;&gt;Request&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#request&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;handler.next(options);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;意思： 处理完了，继续发送请求&lt;/p&gt;
&lt;h5 id=&quot;response&quot;&gt;Response&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#response&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;handler.next(response);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;意思:  继续返回数据&lt;/p&gt;
&lt;h5 id=&quot;error&quot;&gt;Error&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#error&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;handler.next(err);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;意思:  继续抛错误&lt;/p&gt;
&lt;h3 id=&quot;我们先试一下在终端输出&quot;&gt;我们先试一下在终端输出&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#我们先试一下在终端输出&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;其中onRequest()  onResponse()  onError()函数里的参数可以直接写参数名,无需声明类型&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;InterceptorsWrapper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;// 请求前&lt;/span&gt;
      onRequest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===发送请求===&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请求地址: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;uri&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      &lt;span class=&quot;token comment&quot;&gt;// 成功返回&lt;/span&gt;
      onResponse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===收到响应===&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      &lt;span class=&quot;token comment&quot;&gt;// 出错&lt;/span&gt;
      onError&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===发生错误===&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt; res &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://jsonplaceholder.typicode.com/posts/1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===最终结果===&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;res&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 创建Dio实例&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//设置基础地址和超时时间&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://jsonplaceholder.typicode.com&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 基础地址&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connectTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 连接超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sendTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 发送超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;receiveTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 响应超时,类型为Duration&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// 添加请求拦截器&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 添加拦截器&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;InterceptorsWrapper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 请求拦截器&lt;/span&gt;
        onRequest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 响应拦截器&lt;/span&gt;
        onResponse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;//http状态码为2XX成功,3XX跳转,4XX错误,5XX服务器错误&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;// 其他状态码视为错误,抛出异常&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;DioException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 错误拦截器&lt;/span&gt;
        onError&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//向外暴露get方法,封装请求&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; queryParameters&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;然后与materialapp结合&quot;&gt;然后与MaterialApp结合&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#然后与materialapp结合&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioDemoPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioDemoPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioDemoPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;DioDemoPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_DioDemoPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _DioDemoPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;DioDemoPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点击按钮发送请求&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;InterceptorsWrapper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 请求前&lt;/span&gt;
        onRequest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===== 请求拦截器 =====&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请求地址: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;uri&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 请求成功&lt;/span&gt;
        onResponse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===== 响应拦截器 =====&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;状态码: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 请求失败&lt;/span&gt;
        onError&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;===== 错误拦截器 =====&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;https://jsonplaceholder.typicode.com/posts/1&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Dio拦截器演示&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;ElevatedButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; loadData&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;发送请求&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SingleChildScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;初始化获取数据&quot;&gt;初始化获取数据&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#初始化获取数据&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们使用测试网站&lt;a href=&quot;https://jsonplaceholder.typicode.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://jsonplaceholder.typicode.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我们可以使用如下后缀来测试数据&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;路径&lt;/th&gt;&lt;th&gt;数量&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/posts&lt;/a&gt;&lt;/td&gt;&lt;td&gt;100 posts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/comments&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/comments&lt;/a&gt;&lt;/td&gt;&lt;td&gt;500 comments&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/albums&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/albums&lt;/a&gt;&lt;/td&gt;&lt;td&gt;100 albums&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/photos&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/photos&lt;/a&gt;&lt;/td&gt;&lt;td&gt;5000 photos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/todos&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/todos&lt;/a&gt;&lt;/td&gt;&lt;td&gt;200 todos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/users&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/users&lt;/a&gt;&lt;/td&gt;&lt;td&gt;10 users&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里我们使用/posts/1获得第一篇测试文章的数据&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;GET&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/posts&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;GET&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts/1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/posts/1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GET&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/posts/1/comments&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/posts/1/comments&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;GET&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;https://jsonplaceholder.typicode.com/comments?postId=1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;/comments?postId=1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;POST&lt;/td&gt;&lt;td&gt;/posts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PUT&lt;/td&gt;&lt;td&gt;/posts/1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PATCH&lt;/td&gt;&lt;td&gt;/posts/1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DELETE&lt;/td&gt;&lt;td&gt;/posts/1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260718170625979.webp&quot; alt=&quot;image-20260718170625979&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对比一下网站内容,完全一致&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260718170658143.webp&quot; alt=&quot;image-20260718170658143&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;点击获取数据&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//初始化&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//使用initState()方法初始化&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_getChannels&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; util &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;// 获取数据&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; util&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;/posts/1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;response&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Dio&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            mainAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;ElevatedButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _getChannels&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;获取数据&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SingleChildScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//Dio 工具类&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 创建Dio实例&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//设置基础地址和超时时间&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://jsonplaceholder.typicode.com&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 基础地址&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connectTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
          &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 连接超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;// ..sendTimeout =&lt;/span&gt;
      &lt;span class=&quot;token comment&quot;&gt;//     Duration(seconds: 5) // 发送超时,类型为Duration&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;receiveTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 响应超时,类型为Duration&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// 添加请求拦截器&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 添加拦截器&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;InterceptorsWrapper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 请求拦截器&lt;/span&gt;
        onRequest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 响应拦截器&lt;/span&gt;
        onResponse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;//http状态码为2XX成功,3XX跳转,4XX错误,5XX服务器错误&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;// 其他状态码视为错误,抛出异常&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;DioException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 错误拦截器&lt;/span&gt;
        onError&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//向外暴露get方法,封装请求&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; queryParameters&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;web端跨域问题&quot;&gt;web端跨域问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#web端跨域问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;默认情况下,flutter运行 web 端加载网络资源会报跨域可能提示错误,解决方法是:&lt;/p&gt;
&lt;p&gt;首先在flutter/packages/flutter_tools/lib/src/web/chrome.dart里添加&apos;--disable-web-security&apos;,&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260903222328495.webp&quot; alt=&quot;image-20260903222328495&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后删除flutter/bin/cache/下的 &lt;strong&gt;flutter_tools.snaphot&lt;/strong&gt;和&lt;strong&gt;flutter_tools.stamp&lt;/strong&gt;缓存文件&lt;/p&gt;
&lt;p&gt;最后执行 flutter doctor -v&lt;/p&gt;
&lt;p&gt;然后重新运行项目&lt;/p&gt;
&lt;p&gt;这个我们单独在一篇文章里解释&lt;/p&gt;
&lt;h2 id=&quot;父传子实现&quot;&gt;父传子实现&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#父传子实现&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;span&gt;191&lt;/span&gt;&lt;span&gt;192&lt;/span&gt;&lt;span&gt;193&lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;195&lt;/span&gt;&lt;span&gt;196&lt;/span&gt;&lt;span&gt;197&lt;/span&gt;&lt;span&gt;198&lt;/span&gt;&lt;span&gt;199&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;201&lt;/span&gt;&lt;span&gt;202&lt;/span&gt;&lt;span&gt;203&lt;/span&gt;&lt;span&gt;204&lt;/span&gt;&lt;span&gt;205&lt;/span&gt;&lt;span&gt;206&lt;/span&gt;&lt;span&gt;207&lt;/span&gt;&lt;span&gt;208&lt;/span&gt;&lt;span&gt;209&lt;/span&gt;&lt;span&gt;210&lt;/span&gt;&lt;span&gt;211&lt;/span&gt;&lt;span&gt;212&lt;/span&gt;&lt;span&gt;213&lt;/span&gt;&lt;span&gt;214&lt;/span&gt;&lt;span&gt;215&lt;/span&gt;&lt;span&gt;216&lt;/span&gt;&lt;span&gt;217&lt;/span&gt;&lt;span&gt;218&lt;/span&gt;&lt;span&gt;219&lt;/span&gt;&lt;span&gt;220&lt;/span&gt;&lt;span&gt;221&lt;/span&gt;&lt;span&gt;222&lt;/span&gt;&lt;span&gt;223&lt;/span&gt;&lt;span&gt;224&lt;/span&gt;&lt;span&gt;225&lt;/span&gt;&lt;span&gt;226&lt;/span&gt;&lt;span&gt;227&lt;/span&gt;&lt;span&gt;228&lt;/span&gt;&lt;span&gt;229&lt;/span&gt;&lt;span&gt;230&lt;/span&gt;&lt;span&gt;231&lt;/span&gt;&lt;span&gt;232&lt;/span&gt;&lt;span&gt;233&lt;/span&gt;&lt;span&gt;234&lt;/span&gt;&lt;span&gt;235&lt;/span&gt;&lt;span&gt;236&lt;/span&gt;&lt;span&gt;237&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:dio/dio.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;debugShowCheckedModeBanner&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 数据模型&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; imageUrl&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;imageUrl&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 父组件&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 父组件保存数据&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; pins &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  bool loading &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 获取数据&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_getChannels&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; util &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      loading &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt; response &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; util&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;/posts&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

      &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; response&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        pins &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;title&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

            &lt;span class=&quot;token comment&quot;&gt;// 暂时使用随机图片测试&lt;/span&gt;
            imageUrl&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://picsum.photos/300/${300 + item[&apos;&lt;/span&gt;&lt;/span&gt;id&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;] * 20}&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        loading &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

      &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        loading &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Pinterest Demo&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; loading
          &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CircularProgressIndicator&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pins&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEmpty
          &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ElevatedButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _getChannels&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;获取数据&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;// 父传子&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
              pins&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pins&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 子组件：图片网格&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinGrid&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; pins&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pins&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 获取当前窗口宽度&lt;/span&gt;
    double width &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MediaQuery&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;size&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// 根据屏幕宽度决定列数&lt;/span&gt;
    int columns&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      columns &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 手机&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;900&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      columns &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 平板&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      columns &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 小电脑&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1600&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      columns &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 普通电脑&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      columns &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 大屏幕&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      gridDelegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverGridDelegateWithFixedCrossAxisCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; columns&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 横向间距&lt;/span&gt;
        crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 纵向间距&lt;/span&gt;
        mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 卡片比例&lt;/span&gt;
        childAspectRatio&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pins&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

      itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinCard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; pins&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 子组件：一张图片卡片&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinCard&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinData&lt;/span&gt; pin&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PinCard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pin&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;start&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 图片&lt;/span&gt;
        &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ClipRRect&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;network&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              pin&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;imageUrl&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fit&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxFit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cover&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

              &lt;span class=&quot;token comment&quot;&gt;// 加载失败&lt;/span&gt;
              errorBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; error&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; stackTrace&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Icon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Icons&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 标题&lt;/span&gt;
        &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          pin&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          maxLines&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          overflow&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextOverflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ellipsis&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// Dio 工具类&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// =========================&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt; _dio &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dio&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;DioUtils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;options
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;baseUrl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;https://jsonplaceholder.typicode.com&apos;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connectTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;receiveTimeout &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_addInterceptors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;interceptors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;InterceptorsWrapper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        onRequest&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        onResponse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;statusCode&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;DioException&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;requestOptions&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        onError&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; handler&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          handler&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reject&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Response&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; _dio&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;url&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; queryParameters&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; params&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BD%91%E7%BB%9C%E8%AF%B7%E6%B1%82/image-20260903225959320.webp&quot; alt=&quot;image-20260903225959320&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>flutter---组件通信</title><link>https://huyangpahuo.vercel.app/posts/flutter-zu-jian-tong-xin/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-zu-jian-tong-xin/</guid><description>本篇来了解组件通信</description><pubDate>Fri, 15 May 2026 20:11:21 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来了解组件通信&quot;&gt;今天来了解组件通信&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来了解组件通信&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260515201329700.webp&quot; alt=&quot;image-20260515201329700&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;构造函数传递父传子&quot;&gt;构造函数传递(父传子)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#构造函数传递父传子&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260515213537697.webp&quot; alt=&quot;image-20260515213537697&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;子组件属性如果没有初始值，需要在构造函数中用&lt;strong&gt;required&lt;/strong&gt;来接收属性&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;无状态组件子组件&quot;&gt;无状态组件子组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#无状态组件子组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Copyright © 2024 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//使用命名参数来传递name参数&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260516115309344.webp&quot; alt=&quot;image-20260516115309344&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;有状态组件子组件&quot;&gt;有状态组件子组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#有状态组件子组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello World&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 传递参数给子组件&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Copyright © 2024 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; message&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 定义一个参数，用于接收父组件传递的数据&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;message&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 通过构造函数接收父组件传递的参数&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_ChildState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _ChildState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;子组件&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;widget&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;message&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 通过 widget.message 获取父组件传递的参数&lt;/span&gt;
        style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里可以尝试用List来实现子组件的生成&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; _list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//用List来列举数据&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;钻石剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;下届合金剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;木剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;石剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;铁剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;金剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;铜剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;三叉戟&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;弓箭&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内边距&lt;/span&gt;
        crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每行显示2个&lt;/span&gt;
        mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
        crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//生成List的长度个Child&lt;/span&gt;
        children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;weaponname&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _list&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; weaponname&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weaponname&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_ChildState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _ChildState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//子组件居中对齐&lt;/span&gt;
      decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//边框和背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        widget&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weaponname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//子组件显示的文本&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260517125311290.webp&quot; alt=&quot;image-20260517125311290&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;h2 id=&quot;回调函数传递子传父&quot;&gt;回调函数传递(子传父)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#回调函数传递子传父&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260517134952556.webp&quot; alt=&quot;image-20260517134952556&quot; style=&quot;zoom: 80%;&quot;&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; _list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//用List来列举数据&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;钻石剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;下届合金剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;木剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;石剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;铁剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;金剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;铜剑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;三叉戟&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;弓箭&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内边距&lt;/span&gt;
        crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每行显示2个&lt;/span&gt;
        mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
        crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//生成List的长度个Child&lt;/span&gt;
        children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            weaponname&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _list&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            index&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            onDelete&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//删除回调函数&lt;/span&gt;
              &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                _list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeAt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; weaponname&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; onDelete&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//定义回调函数用于删除操作&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weaponname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;onDelete&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_ChildState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _ChildState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Child&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bottomRight&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//子组件居中对齐&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Radius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//边框和背景颜色&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            widget&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weaponname&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//子组件显示的文本&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token class-name&quot;&gt;IconButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            widget&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;onDelete&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;widget&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//调用回调函数删除当前子组件&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          icon&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Icon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Icons&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;delete&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; size&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//删除按钮,点击删除子组件&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%BB%84%E4%BB%B6%E9%80%9A%E4%BF%A1/image-20260517140749453.webp&quot; alt=&quot;image-20260517140749453&quot; style=&quot;zoom: 25%;&quot;&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>PotPlayer的配置</title><link>https://huyangpahuo.vercel.app/posts/potplayer-de-pei-zhi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/potplayer-de-pei-zhi/</guid><description>本篇说明potplayer的配置</description><pubDate>Thu, 07 May 2026 12:33:12 GMT</pubDate><content:encoded>&lt;h1 id=&quot;potplayer是一款专业的播放器不过配置极其复杂&quot;&gt;PotPlayer是一款专业的播放器,不过配置极其复杂&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#potplayer是一款专业的播放器不过配置极其复杂&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;这也是很多人吐槽的点,但是再怎么说这玩意在播放器界也是无敌的存在&lt;/p&gt;
&lt;h2 id=&quot;下载potplayer和完美解码&quot;&gt;下载potplayer和完美解码&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载potplayer和完美解码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507125643668.webp&quot; alt=&quot;image-20260507125643668&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;因为在视频和音频的解码这方面的配置很繁琐,这里就诞生了完美解码这个东西&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.wmzhe.com/soft-13163.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载完美解码&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;首先前往完美解码的设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507124538213.webp&quot; alt=&quot;image-20260507124538213&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;按照我的选就行了,然后点击应用, 这里我们的视频的播放就没有问题了,完美解码会自动帮我们配置解码器(例如madVR MPCVR和LAV Filters这三个外置的程序,如果自己配置的话很麻烦)&lt;/p&gt;
&lt;p&gt;其中这个硬件加速设置为D3D11,不然4K视频播放非常卡&lt;/p&gt;
&lt;p&gt;顺便提一下完美解码会替换掉我们potplayer的图标,不过没有什么影响&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507143031874.webp&quot; alt=&quot;image-20260507143031874&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;配置potplayer&quot;&gt;配置potplayer&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置potplayer&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后打开potplayer来进行额外的配置&lt;/p&gt;
&lt;p&gt;首先打开这里&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507124806533.webp&quot; alt=&quot;image-20260507124806533&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你可以看到我下载了刺客伍六七的番,可以看到Potplayer支持弹幕和字幕&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后直接按照我的设置就行了,不需要知道为什么&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507131142069.webp&quot; alt=&quot;image-20260507131142069&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;其中这个&lt;code&gt;不聊天时使用各种浏览器功能&lt;/code&gt;这个大家可选可不选,因为potplayer可以当做浏览器&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507131227223.webp&quot; alt=&quot;image-20260507131227223&quot; style=&quot;zoom: 50%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507131708163.webp&quot; alt=&quot;image-20260507131708163&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;这里我们只需要记住鼠标的三个快捷键,鼠标左键单击暂停,双击退出,中键单击全屏,右键单击打开设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507132404210.webp&quot; alt=&quot;image-20260507132404210&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507132723466.webp&quot; alt=&quot;image-20260507132723466&quot; style=&quot;zoom:50%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507132931774.webp&quot; alt=&quot;image-20260507132931774&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;我们按下&lt;font color=&quot;#FF1493&quot;&gt;Tab键&lt;/font&gt;就可以查看视频的信息&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507133157855.webp&quot; alt=&quot;image-20260507133157855&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507133447537.webp&quot; alt=&quot;image-20260507133447537&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后还有方便截图的快捷键 &lt;code&gt;D(上一帧画面)&lt;/code&gt; 和 &lt;code&gt;F (下一帧画面)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;以及 &lt;code&gt;Ctrl + shift +左右方向键&lt;/code&gt;  的关键帧&lt;/p&gt;
&lt;p&gt;以及&lt;code&gt;X 减速播放&lt;/code&gt; 和 &lt;code&gt;C 加速播放&lt;/code&gt; 还有 &lt;code&gt;Z 倍率切换(回到原始1倍速)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;还有&lt;code&gt;[ 键&lt;/code&gt;和 &lt;code&gt;] 键&lt;/code&gt;将视频打上AB区间实现某一片段的循环播放,而&lt;code&gt;{ 键&lt;/code&gt;和&lt;code&gt;} 键&lt;/code&gt;则分别取消这两个点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507135253292.webp&quot; alt=&quot;image-20260507135253292&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507135654683.webp&quot; alt=&quot;image-20260507135654683&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有按&lt;code&gt;P 添加书签 &lt;/code&gt; 和 &lt;code&gt;H打开书签界面&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507135900586.webp&quot; alt=&quot;image-20260507135900586&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507140124459.webp&quot; alt=&quot;image-20260507140124459&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Ctrl +C&lt;/code&gt; 复制画面到剪切板&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507140320114.webp&quot; alt=&quot;image-20260507140320114&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;按 &lt;code&gt;K 键&lt;/code&gt;是打开截图设置,而 截图是&lt;code&gt; Ctrl +E&lt;/code&gt;,自己提前设置好保存的文件夹&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507143424186.webp&quot; alt=&quot;image-20260507143424186&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507141109338.webp&quot; alt=&quot;image-20260507141109338&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Alt +C&lt;/code&gt; 录制视频&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507141406607.webp&quot; alt=&quot;image-20260507141406607&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有这个,保持宽高比,调整窗口大小画面不变形&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507141601880.webp&quot; alt=&quot;image-20260507141601880&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;以及视频渲染器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507142040586.webp&quot; alt=&quot;image-20260507142040586&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;声音关掉规格化防止忽大忽小&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507142242131.webp&quot; alt=&quot;image-20260507142242131&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然也可以自定义关联的文件,比如MP4 什么的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507142457820.webp&quot; alt=&quot;image-20260507142457820&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这样potplayer会在视频播放的时候自动寻找和视频相关文件比如字幕文件和弹幕文件这些&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507142631315.webp&quot; alt=&quot;image-20260507142631315&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;在线字幕搜索功能&quot;&gt;在线字幕搜索功能&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#在线字幕搜索功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507171001091.webp&quot; alt=&quot;image-20260507171001091&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;同样的 potplayer也内置了在线字幕搜索功能(不过没什么用)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/PotPlayer%E7%9A%84%E9%85%8D%E7%BD%AE/image-20260507171113002.webp&quot; alt=&quot;image-20260507171113002&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以在这里导入插件,可以看到有一些内置的字幕平台,这个可以根据视频的名称来搜素视频相关的字幕(不过不好用,因为这个只适合那些美国大片和知名电影)&lt;/p&gt;
&lt;p&gt;这个你们可以参考这个&lt;a href=&quot;https://www.bilibili.com/video/BV1mQZgYcEtb?vd_source=8b64ea52b2b8f7ddafd25b28360cd6c0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;视频&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;更多配置功能&quot;&gt;更多配置功能&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#更多配置功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;更多功能参考&lt;a href=&quot;http://www.potplayercn.com/course&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;这里&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>PotPlayer</category></item><item><title>Neovim的使用和配置</title><link>https://huyangpahuo.vercel.app/posts/neovim-de-shi-yong-he-pei-zhi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/neovim-de-shi-yong-he-pei-zhi/</guid><description>本篇介绍Neovim在Windows上的使用</description><pubDate>Sat, 02 May 2026 19:08:55 GMT</pubDate><content:encoded>&lt;h1 id=&quot;neovimlinux用户肯定老熟悉了但是对windows用户来说一点也不好用&quot;&gt;Neovim,Linux用户肯定老熟悉了,但是对Windows用户来说一点也不好用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#neovimlinux用户肯定老熟悉了但是对windows用户来说一点也不好用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502194147446.webp&quot; alt=&quot;image-20260502194147446&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过这个还是提供了Windows版本的,我们就来学学怎么用吧&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;快捷键&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;功能&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;i&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;进入插入模式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;Esc&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;回到普通模式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;:w&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;保存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;:q&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;退出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;:wq&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;保存退出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;dd&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;删除一行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;yy&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;复制一行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;p&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;粘贴&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;u&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;撤销&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;Ctrl+r&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;重做&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://neovim.io/doc/install/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;下载地址&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;当然,这个和VScode一样,如果不装插件的话就是一个壳子没什么用&lt;/p&gt;
&lt;p&gt;但是这玩意的插件全都装到了C盘和VScode Cursor还有Trae一样吃C盘配置&lt;/p&gt;
&lt;p&gt;首先配置系统环境变量,保存位置你们自己调整&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;XDG_DATA_HOME=D:\Neovim\nvim-data
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;还有就是系统变量里关闭SSL检查不然插件下载地址被墙了根本下载不下来&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;CURL_SSL_NO_REVOKE=1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后cmd输入看是否配置成功&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;echo %XDG_DATA_HOME%
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在Neovim里输入并回车&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;:echo stdpath(&quot;data&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;code&gt;D:\Neovim\nvim-data\nvim-data&lt;/code&gt;就说明已经配置到D盘了&lt;/p&gt;
&lt;p&gt;然后我们前往这个&lt;a href=&quot;https://github.com/linxuan-sys/nvim&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;仓库&lt;/font&gt;&lt;/a&gt;下载大佬配置好的文件&lt;/p&gt;
&lt;p&gt;在你的&lt;code&gt;C:\Users\用户名\AppData\Local&lt;/code&gt;里将仓库里的整个nvim文件夹粘贴进去并重启Neovim就可以看到正在下载插件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502214717492.webp&quot; alt=&quot;image-20260502214717492&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后等待全部下载完成重启Neovim&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502220905653.webp&quot; alt=&quot;image-20260502220905653&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;要输入命令的话使用“&lt;font color=&quot;#40E0D0&quot;&gt; :&lt;/font&gt;  “键盘快捷键,按回车可以取消输入&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502221128869.webp&quot; alt=&quot;image-20260502221128869&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;按e键变成这样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502221421696.webp&quot; alt=&quot;image-20260502221421696&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;按X键进入Lasy插件市场(这里说明一下,Lazy就是一个插件管理器,也是最好用的),可以挑选你想用的插件下载重启就行啦(注意,如果你下载了部分插件可能会导致冲突或者覆盖掉当前主题)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260503001058200.webp&quot; alt=&quot;image-20260503001058200&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而使用nvim的方式比如在cmd或powershell输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;nvim .      //当前目录作为项目打开
或者
nvim D:\project\mygame     //打开指定文件夹
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;就可以打开文件了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Neovim%E7%9A%84%E4%BD%BF%E7%94%A8%E5%92%8C%E9%85%8D%E7%BD%AE/image-20260502235650552.webp&quot; alt=&quot;image-20260502235650552&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Neovim</category></item><item><title>ClaudeCode配置DeepSeek</title><link>https://huyangpahuo.vercel.app/posts/claudecode-pei-zhi-deepseek/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/claudecode-pei-zhi-deepseek/</guid><description>使用deepseek配置claude code和其vscode插件</description><pubDate>Tue, 28 Apr 2026 16:36:35 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天尝试用claude-code接deepseek模型&quot;&gt;今天尝试用claude code接Deepseek模型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天尝试用claude-code接deepseek模型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;通过cc-switch&quot;&gt;通过CC-Switch&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#通过cc-switch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先打开CC-Switch,然后点击加号&lt;/p&gt;
&lt;p&gt;这里你可以看到我已经配置了几个其他的API给Claude&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428164015306.webp&quot; alt=&quot;image-20260428164015306&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里可以选择各种各样的供应商,比如OpenRouter Deepseek和Bailian(也就是阿里云百炼)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428164057743.webp&quot; alt=&quot;image-20260428164057743&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我用阿里云百炼的,模型全部选择deepseek-v4-pro&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428164338805.webp&quot; alt=&quot;image-20260428164338805&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后去下载Claudecode&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;npm install -g @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在如果你直接在终端输入 &lt;strong&gt;claude&lt;/strong&gt;启动的话,会显示需要你登录,众所周知 A/不喜欢中国人所以伪装的门槛还是很高的&lt;/p&gt;
&lt;p&gt;但是我们可以通过CC-switch来中转, 完成配置后在.claude文件夹找到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428170114404.webp&quot; alt=&quot;image-20260428170114404&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;模型相关的配置会保存在&lt;strong&gt;settings.json&lt;/strong&gt;文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428170231228.webp&quot; alt=&quot;image-20260428170231228&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;例如我的当前是这种&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;env&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_BASE_URL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://dashscope.aliyuncs.com/apps/anthropic&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_AUTH_TOKEN&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;sk-你的API key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_MODEL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;deepseek-v4-pro&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_DEFAULT_HAIKU_MODEL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;deepseek-v4-pro&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_DEFAULT_SONNET_MODEL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;deepseek-v4-pro&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;ANTHROPIC_DEFAULT_OPUS_MODEL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;deepseek-v4-pro&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时就可以在里面使用了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428170857208.webp&quot; alt=&quot;image-20260428170857208&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;vscode的claude插件&quot;&gt;VScode的Claude插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#vscode的claude插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在VScode的settings.json里将&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;claudeCode.preferredLocation&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;panel&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;claudeCode.environmentVariables&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;改为&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;claudeCode.preferredLocation&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;panel&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;claudeCode.environmentVariables&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ANTHROPIC_BASE_URL&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;https://xxxx&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ANTHROPIC_AUTH_TOKEN&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;value&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;xxxx&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时就可以自动使用我们在CC-switch里的设置了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/ClaudeCode%E9%85%8D%E7%BD%AEDeepSeek/image-20260428171039070.webp&quot; alt=&quot;image-20260428171039070&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>ClaudeCode</category></item><item><title>flutter---常用的各种组件</title><link>https://huyangpahuo.vercel.app/posts/flutter-chang-yong-de-ge-zhong-zu-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-chang-yong-de-ge-zhong-zu-jian/</guid><description>本篇讲弹性布局,流式布局,层叠布局三大布局,和滚动组件还有文本图片组件</description><pubDate>Mon, 27 Apr 2026 10:26:20 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来学学更多的flutter的组件&quot;&gt;今天来学学更多的flutter的组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来学学更多的flutter的组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;弹性布局-flex&quot;&gt;弹性布局-Flex&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#弹性布局-flex&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427103207193.webp&quot; alt=&quot;image-20260427103207193&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;expanded&quot;&gt;Expanded&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#expanded&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Flex&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            direction&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴水平&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//direction: Axis.vertical, //主轴垂直&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//Expaned组件会占满剩余空间&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                flex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//flex属性表示占剩余空间的比例,如果有多个Expanded组件，flex值越大占的空间越多&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;redAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

              &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                flex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427105320683.webp&quot; alt=&quot;image-20260427105320683&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;flexible&quot;&gt;Flexible&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#flexible&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Flex&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            direction&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴水平&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//direction: Axis.vertical, //主轴垂直&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//Flexible组件不同于Expanded组件，Flexible组件可以设置flex属性来控制占用剩余空间的比例，而Expanded组件默认占用所有剩余空间&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Flexible&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                flex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//flex属性表示占剩余空间的比例,如果有多个Flexible组件，flex值越大占的空间越多&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;redAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

              &lt;span class=&quot;token class-name&quot;&gt;Flexible&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                flex&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427110008830.webp&quot; alt=&quot;image-20260427110008830&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Flex布局受其父组件传递的约束影响。确保父组件提供了适当的布局约束&lt;/p&gt;
&lt;p&gt;Expanded与Flexible的区别：&lt;/p&gt;
&lt;p&gt;--------    Expanded强制子组件填满所有剩余空间，&lt;/p&gt;
&lt;p&gt;--------    Flexible根据自身大小调整，不强制占满空间&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们来练习一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Flex&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            direction&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vertical&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴垂直&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;redAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Expanded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;greenAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427111112801.webp&quot; alt=&quot;image-20260427111112801&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;流式布局-wrap&quot;&gt;流式布局-Wrap&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#流式布局-wrap&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427111509237.webp&quot; alt=&quot;image-20260427111509237&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当子组件内容是根据数据动态生成时，使用wrap可以确保布局始终适配&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//使用Widgt类型的返回值，生成一个包含10个Container组件的列表&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//List.generate(count, generator)方法可以生成一个包含count个元素的列表，generator是一个函数，用于生成每个元素的值&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里用(){}匿名函数来生成每个元素的值，index是当前元素的索引，从0开始&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;redAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Wrap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            spacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴上间距&lt;/span&gt;
            runSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴上间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;WrapAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;spaceAround&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴对齐方式为均分&lt;/span&gt;
            direction&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴方向为水平方向&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//生成10个子组件&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427113827205.webp&quot; alt=&quot;image-20260427113827205&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;List.generate是一个构造器，用于快速创建长度固定且每个元素可以通过索引号确定的列表语法：&lt;/p&gt;
&lt;p&gt;List.generate(int count, E generator(int index), {bool growable: false})&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;层叠布局-stackpositioned&quot;&gt;层叠布局-Stack/Positioned&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#层叠布局-stackpositioned&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427152644733.webp&quot; alt=&quot;image-20260427152644733&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427160646763.webp&quot; alt=&quot;image-20260427160646763&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看出这个是层叠式的,一层叠一层&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427154016318.webp&quot; alt=&quot;image-20260427154016318&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//让每一个子组件都居中&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;positioned&quot;&gt;Positioned&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#positioned&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;150&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token comment&quot;&gt;//Positionzd组件用于确定子组件的位置&lt;/span&gt;
                right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                bottom&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                bottom&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427155308373.webp&quot; alt=&quot;image-20260427155308373&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有一个很奇葩的玩法就是,我们在之前学习的padding这里可以用positioned来代替效果&lt;/p&gt;
&lt;p&gt;首先先了解positioned的一个特性,如果我们同时输入上下左右四个方向&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Positioned(
    right: 50,
    top: 50,
    bottom: 50,
    left: 50,
    child: Container(width: 50, height: 50, color: Colors.yellow),
),
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时代码不会报错,而是子组件往四个方向延伸来覆盖容器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427155905606.webp&quot; alt=&quot;image-20260427155905606&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而且取值为0的时候甚至全部覆盖body&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Positioned(
	right: 0,
	top: 0,
	bottom: 0,
	left: 0,
	child: Container(width: 50, height: 50, color: Colors.yellow),
),
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427160250154.webp&quot; alt=&quot;image-20260427160250154&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;同理,我们也可以制造单方向延伸的条&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
	right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	bottom&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427160510691.webp&quot; alt=&quot;image-20260427160510691&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;文本组件-text&quot;&gt;文本组件-Text&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#文本组件-text&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427160906913.webp&quot; alt=&quot;image-20260427160906913&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427192614139.webp&quot; alt=&quot;image-20260427192614139&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//fontWeight这里是加粗&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//color是字体颜色&lt;/span&gt;
              fontStyle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;italic&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//fontStyle这里是斜体&lt;/span&gt;
              shadows&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;Shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black45&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  offset&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Offset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  blurRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//shadows是阴影&lt;/span&gt;
              decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;underline&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//decoration是下饰线&lt;/span&gt;
              decorationColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white70&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//decorationColor是下饰线的颜色&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们普通的文字排列是默认的换行&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427193608648.webp&quot; alt=&quot;image-20260427193608648&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是我们也可以指定显示的行号&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊:欢迎管理员群主进入！本群的管理者有陈千语干员和佩丽卡总督等人,新成员为庄方宜天师和弥弗长官,请大家遵守群规，友好相处哦！&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//fontWeight这里是加粗&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//color是字体颜色&lt;/span&gt;
              fontStyle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;italic&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//fontStyle这里是斜体&lt;/span&gt;
              shadows&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;Shadow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black45&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  offset&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Offset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  blurRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//shadows是阴影&lt;/span&gt;
              decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;underline&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//decoration是下饰线&lt;/span&gt;
              decorationColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white70&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//decorationColor是下饰线的颜色&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            maxLines&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//maxLines是文本的最大行数，这里是1行&lt;/span&gt;
            overflow&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextOverflow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ellipsis&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//overflow是文本溢出时的处理方式，这里是用省略号表示溢出部分&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427193807845.webp&quot; alt=&quot;image-20260427193807845&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;textspan&quot;&gt;TextSpan&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#textspan&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果需要在同一段本中显示不同样式，可用Text.rich构造函数配合TextSpan来实现&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427195400407.webp&quot; alt=&quot;image-20260427195400407&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rich&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// 使用 Text.rich 来创建富文本富文本就是可以在同一段文本中使用不同的样式&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;TextSpan&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              text&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点击进入,打开你的拉电线之旅~~\n\n&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;TextSpan&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  text&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;欢迎来到终末地AI群聊！\n\n&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;TextSpan&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  text&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;在这里，你可以与各种AI角色进行有趣的对话\n\n&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;indigoAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;TextSpan&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;梨花飘落你窗前~~\n\n&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;deepOrangeAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 这是默认的样式，如果子 TextSpan 没有指定样式，就会使用这个样式&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427195655702.webp&quot; alt=&quot;image-20260427195655702&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;图片组件-image&quot;&gt;图片组件-image&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#图片组件-image&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427200101988.webp&quot; alt=&quot;image-20260427200101988&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427211656998.webp&quot; alt=&quot;image-20260427211656998&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;imageasset本地资源&quot;&gt;image.asset(本地资源)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#imageasset本地资源&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;pubspec.yaml启用图片文件夹&lt;/p&gt;
&lt;p&gt;将资源assets功能启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;assets:
    - images/a_dot_burr.jpeg
    - images/a_dot_ham.jpeg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个需要一些配置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427200736889.webp&quot; alt=&quot;image-20260427200736889&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;例如我们将图片放到这个images文件夹&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427201351231.webp&quot; alt=&quot;image-20260427201351231&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在main.dart中启用资源,同时重新run执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;lib/images/01.png&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427202244242.webp&quot; alt=&quot;image-20260427202244242&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然也可以使用width和hight来控制图片的大小&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;lib/images/01.png&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fit&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxFit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;contain&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;fit属性&quot;&gt;fit属性&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#fit属性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这里&lt;code&gt;fit&lt;/code&gt; 用的是 BoxFit 这个枚举，一共有 &lt;strong&gt;7种&lt;/strong&gt;，每一种控制图片如何在给定空间里缩放/裁剪&lt;/p&gt;
&lt;h4 id=&quot;1-boxfitfill&quot;&gt;1. BoxFit.fill&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1-boxfitfill&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.fill
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;强行拉伸填满&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会变形 ❗（宽高比被破坏）&lt;/li&gt;
&lt;li&gt;很少用，除非你不在意比例&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;2-boxfitcontain&quot;&gt;2. BoxFit.contain&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2-boxfitcontain&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.contain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;完整显示图片&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不裁剪&lt;/li&gt;
&lt;li&gt;保持比例&lt;/li&gt;
&lt;li&gt;可能有空白（黑边）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 类似：图片“缩小装进盒子”&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;3-boxfitcover-最常用&quot;&gt;3. BoxFit.cover ⭐（最常用）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3-boxfitcover-最常用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.cover
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;铺满容器&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保持比例&lt;/li&gt;
&lt;li&gt;会裁剪超出的部分&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📌 类似：背景图常用（推荐）&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id=&quot;4-boxfitfitwidth&quot;&gt;4. BoxFit.fitWidth&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4-boxfitfitwidth&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.fitWidth
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;宽度填满&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高度按比例缩放&lt;/li&gt;
&lt;li&gt;可能上下裁剪&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;5-boxfitfitheight&quot;&gt;5. BoxFit.fitHeight&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5-boxfitfitheight&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.fitHeight
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;高度填满&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宽度按比例缩放&lt;/li&gt;
&lt;li&gt;可能左右裁剪&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;6-boxfitnone&quot;&gt;6. BoxFit.none&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6-boxfitnone&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.none
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;不缩放&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;原始大小显示&lt;/li&gt;
&lt;li&gt;超出部分直接裁掉&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id=&quot;7-boxfitscaledown&quot;&gt;7. BoxFit.scaleDown&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#7-boxfitscaledown&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;fit: BoxFit.scaleDown
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;👉 &lt;strong&gt;只缩小，不放大&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;类似 &lt;code&gt;contain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;但如果图片本来就小，就不会放大&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;imagenetwork网络资源&quot;&gt;image.network(网络资源)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#imagenetwork网络资源&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个不需要在pubspec.yaml 直接使用就行了,把网址或者库粘贴进去&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Image.network(&apos;https://example.com/image.png&apos;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是问题是,这个东西需要联网,否则图片会显示不出来, 除此之外, Android/HarmonyOS/iOS使用Image.network需要配置网络权限&lt;/p&gt;
&lt;p&gt;而且如果图片的源头断了也不会显示出来&lt;/p&gt;
&lt;h2 id=&quot;文本输入组件-textfield&quot;&gt;文本输入组件-TextField&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#文本输入组件-textfield&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427212237017.webp&quot; alt=&quot;image-20260427212237017&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427224300913.webp&quot; alt=&quot;image-20260427224300913&quot; style=&quot;zoom: 80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们可以写一个登录界面,使用&lt;strong&gt;有状态组件StatefulWidget&lt;/strong&gt;(因为这个是动态刷新的)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427222355749.webp&quot; alt=&quot;image-20260427222355749&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt; _usernameController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 实例化一个用户名输入控制器&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt; _passwordController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 实例化一个密码输入控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            mainAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//界面元素垂直居中&lt;/span&gt;

            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextField&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                controller&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _usernameController&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 绑定用户名输入控制器&lt;/span&gt;
                onChanged&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;用户名输入: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 用户名输入时的回调&lt;/span&gt;
                onSubmitted&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;用户名提交: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 用户名提交时的回调&lt;/span&gt;
                decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;InputDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  contentPadding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框内容内边距,这里设置为左侧20像素&lt;/span&gt;
                  hintText&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入用户名&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框提示文本&lt;/span&gt;
                  fillColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;242&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;227&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框背景颜色&lt;/span&gt;
                  filled&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 是否填充背景颜色&lt;/span&gt;
                  labelText&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;用户名&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框标签&lt;/span&gt;
                  border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;OutlineInputBorder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token comment&quot;&gt;// 输入框边框样式,这里设置为无边框并且圆角&lt;/span&gt;
                    borderSide&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderSide&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框之间的间距&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextField&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                controller&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _passwordController&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 绑定密码输入控制器&lt;/span&gt;
                obscureText&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 隐藏输入内容,适用于密码输入&lt;/span&gt;
                onChanged&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;密码输入: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 密码输入时的回调&lt;/span&gt;
                onSubmitted&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;密码提交: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 密码提交时的回调&lt;/span&gt;
                decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;InputDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  contentPadding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框内容内边距,这里设置为左侧20像素&lt;/span&gt;
                  hintText&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入密码&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框提示文本&lt;/span&gt;
                  fillColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;242&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;227&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框背景颜色&lt;/span&gt;
                  filled&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 是否填充背景颜色&lt;/span&gt;
                  labelText&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;密码&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框标签&lt;/span&gt;
                  border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;OutlineInputBorder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token comment&quot;&gt;// 输入框边框样式,这里设置为无边框并且圆角&lt;/span&gt;
                    borderSide&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderSide&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;none&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入框和按钮之间的间距&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;// 按钮的装饰,这里设置为黑色背景和圆角&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;// 登录按钮,使用TextButton组件,并且设置按钮文本颜色为白色&lt;/span&gt;
                  onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;用户名: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;_usernameController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 密码: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;_passwordController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;登录&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;常用滚动组件&quot;&gt;常用滚动组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#常用滚动组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260427224457489.webp&quot; alt=&quot;image-20260427224457489&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;singlechildscrollview&quot;&gt;SingleChildScrollView&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#singlechildscrollview&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260428131617737.webp&quot; alt=&quot;image-20260428131617737&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;包裹个组件，让单个组件具备滚动能&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt; _usernameController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 用户名输入控制器&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt; _passwordController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;
      &lt;span class=&quot;token class-name&quot;&gt;TextEditingController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 密码输入控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SingleChildScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
              &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;条消息&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们可以增加一个回到首页的按钮&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;ScrollController&lt;/span&gt; _scrollController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ScrollController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//滚动控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;// 使用Stack布局，允许内容滚动&lt;/span&gt;
          children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SingleChildScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              controller&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _scrollController&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//添加滚动控制器&lt;/span&gt;
              padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 添加内边距&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;条消息&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                        color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              bottom&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GestureDetector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onTap&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;回到顶部按钮已被点击&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//_scrollController.jumpTo(0);&lt;/span&gt;
                  _scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;animateTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    duration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    curve&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Curves&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ease&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;回到顶部&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GestureDetector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onTap&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;回到底部按钮已被点击&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;// _scrollController.jumpTo(&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//   _scrollController.position.maxScrollExtent,&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;// );&lt;/span&gt;
                  _scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;animateTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    _scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;position&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;maxScrollExtent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    duration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    curve&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Curves&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;ease&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

                  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;回到底部&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260428093647708.webp&quot; alt=&quot;image-20260428093647708&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中这里面涉及的两个方法---jumpTo和animateTo这里细说一下&lt;/p&gt;
&lt;h4 id=&quot;jumpto直接跳转&quot;&gt;jumpTo(直接跳转)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#jumpto直接跳转&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;_scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;jumpTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;本质:&lt;strong&gt;瞬间跳转到指定滚动位置（没有动画）&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;参数只有一个&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;值&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;顶部&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;_scrollController.position.maxScrollExtent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;底部&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;任意数字&lt;/td&gt;&lt;td&gt;指定位置&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不会有任何过渡效果&lt;/li&gt;
&lt;li&gt;立即生效&lt;/li&gt;
&lt;li&gt;用户体验比较“生硬”&lt;/li&gt;
&lt;li&gt;适合：
&lt;ul&gt;
&lt;li&gt;初始化位置&lt;/li&gt;
&lt;li&gt;强制修正滚动位置&lt;/li&gt;
&lt;li&gt;不关心动画的场景&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举例&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;_scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;jumpTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  _scrollController&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;position&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;maxScrollExtent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果就是： 一点击直接“啪”一下到底，没有滚动过程&lt;/p&gt;
&lt;h4 id=&quot;animateto动画平滑&quot;&gt;animateTo(动画平滑)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#animateto动画平滑&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token function&quot;&gt;animateTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  double offset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  required &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt; duration&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  required &lt;span class=&quot;token class-name&quot;&gt;Curve&lt;/span&gt; curve&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;第一个参数offset滚动位置&quot;&gt;第一个参数offset(滚动位置)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第一个参数offset滚动位置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;值&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&lt;td&gt;顶部&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;_scrollController.position.maxScrollExtent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;底部&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;任意数字&lt;/td&gt;&lt;td&gt;指定位置&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这个和jumpTo是一样的&lt;/p&gt;
&lt;h5 id=&quot;第二个参数duration动画时长&quot;&gt;第二个参数duration(动画时长)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第二个参数duration动画时长&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Duration(seconds: 1)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;即动画持续时间为1秒&lt;/p&gt;
&lt;p&gt;你可以这样写：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Duration(milliseconds: 300)
Duration(seconds: 2)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;时间越短 → 越快&lt;/li&gt;
&lt;li&gt;时间越长 → 越慢&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&quot;第三个参数curves动画曲线&quot;&gt;第三个参数curves(动画曲线)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第三个参数curves动画曲线&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Curves.bounceIn
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;控制动画“运动方式”（非常重要）&lt;/p&gt;
&lt;p&gt;常见曲线：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;曲线&lt;/th&gt;&lt;th&gt;效果&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.linear&lt;/code&gt;&lt;/td&gt;&lt;td&gt;匀速（最死板）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.ease&lt;/code&gt;&lt;/td&gt;&lt;td&gt;平滑（推荐）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.easeIn&lt;/code&gt;&lt;/td&gt;&lt;td&gt;先慢后快&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.easeOut&lt;/code&gt;&lt;/td&gt;&lt;td&gt;先快后慢&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.easeInOut&lt;/code&gt;&lt;/td&gt;&lt;td&gt;两头慢中间快&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.bounceIn&lt;/code&gt;&lt;/td&gt;&lt;td&gt;弹跳进入（你现在用的）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Curves.elasticOut&lt;/code&gt;&lt;/td&gt;&lt;td&gt;弹簧效果&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;listview&quot;&gt;ListView&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#listview&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260430163411866.webp&quot; alt=&quot;image-20260430163411866&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;children-模式&quot;&gt;children 模式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#children-模式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个也是最普通的模式&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;条消息&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;builder模式&quot;&gt;builder模式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#builder模式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;builder模式就是用来处理长列表或动态数据的首选和推荐方式&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;方式为接受一个itemBuilder回调函数来按需构建列表项,通过itemCount控制列表长度&lt;/p&gt;
&lt;p&gt;特点是按需构建,不会在初始化时将所有列表项都创建,而是根据用户的滚动行为,动态的创建和销毁列表项&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使用方式为&lt;code&gt;ListView.builder(itemBuilder: ListView,itemCount: itemCount)&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;意思&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;context&lt;/td&gt;&lt;td&gt;当前上下文&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;index&lt;/td&gt;&lt;td&gt;第几个&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//创建的数量&lt;/span&gt;
          itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//在builder里必须要有itemBuilder和返回值&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;条消息&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;separated模式&quot;&gt;separated模式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#separated模式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;作用就是在ListView.builder的基础上,额外提供了构建分割线的能力&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;方式就是需要同时提供itemBuilder , separatorBuilder ,itemCount三个属性&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使用方式为&lt;code&gt; ListView.separated(itemBuilder: itemBuilder, separatorBuilder: separatorBuilder, itemCount: itemCount)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;三个参数分别为要构建的组件,组件之间的分割组件,和构建数量&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;separated&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;top&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;条消息&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          separatorBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//在每个生成的组件之间添加一个间隔,当然这里也可以用Container&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;gridview&quot;&gt;GridView&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#gridview&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508215625050.webp&quot; alt=&quot;image-20260508215625050&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;gridviewcount&quot;&gt;GridView.count&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#gridviewcount&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;作用: 使用GridView.count创建固定列数网络&lt;/p&gt;
&lt;p&gt;使用方式为 &lt;code&gt; GridView.count(crossAxisCount: crossAxisCount)&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//边距20&lt;/span&gt;
          mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
          crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
          children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 个Item&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508221510749.webp&quot; alt=&quot;image-20260508221510749&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;想想这个可以用来干什么? 没错! 可以制作相册!你打开你的手机相册看看是不是差不多的&lt;/p&gt;
&lt;p&gt;还可以这么干&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508221838081.webp&quot; alt=&quot;image-20260508221838081&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们这个默认情况下是竖直向下滚动的也就是&lt;code&gt;crollDirection: Axis.vertical&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;还可以这样实现横向滚动翻阅&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;ScrollController&lt;/span&gt; _scrollController &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ScrollController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//滚动控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//按住shify滚动鼠标滚轮实现横向滚动&lt;/span&gt;
          crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
          crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
          children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 个Item&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;GridView.count以列数为优先。指定格多少列，Flutter动计算列的宽度，在空间内均匀排列&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;gridviewextent&quot;&gt;GridView.extent&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#gridviewextent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个很有意思,因为这个拖动改变窗口大小的时候,组件会自适应位置,就像模态窗口一样&lt;/p&gt;
&lt;p&gt;依旧这个默认的是&lt;code&gt; scrollDirection: Axis.vertical&lt;/code&gt;模式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508224903338.webp&quot; alt=&quot;image-20260508224903338&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;extent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          maxCrossAxisExtent&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//最大交叉轴扩展&lt;/span&gt;
          mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
          crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;vertical&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

          children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 个&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;GridView.extent通过maxCrossAxisExtent设置子项最大宽度/高度来计算横向或者纵向有多少列&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;gridviewbuilder&quot;&gt;GridView.builder&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#gridviewbuilder&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;作用：使GridView.builder实现动态长网格-（懒加载，只渲染可见区域）&lt;/p&gt;
&lt;p&gt;注意;接收gridDelegate布局委托,itemBuilder构造函数,itemCount构造数量&lt;/p&gt;
&lt;p&gt;使用方式&lt;code&gt;GridView.builder(gridDelegate: gridDelegate, itemBuilder: itemBuilder)&lt;/code&gt;&lt;/p&gt;
&lt;h5 id=&quot;slivergriddelegatewithfixedcrossaxiscount&quot;&gt;SliverGridDelegateWithFixedCrossAxisCount&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#slivergriddelegatewithfixedcrossaxiscount&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          gridDelegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverGridDelegateWithFixedCrossAxisCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//行数&lt;/span&gt;
            mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
            crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 个&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;slivergriddelegatewithmaxcrossaxisextent&quot;&gt;SliverGridDelegateWithMaxCrossAxisExtent&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#slivergriddelegatewithmaxcrossaxisextent&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;同样的,刚才说了extent就是组件自适应窗口,这里也是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//ScrollController _scrollController = ScrollController(); //滚动控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GridView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          gridDelegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverGridDelegateWithMaxCrossAxisExtent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            maxCrossAxisExtent&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//最大交叉轴扩展&lt;/span&gt;
            mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//主轴间距&lt;/span&gt;
            crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//交叉轴间距&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 个&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对了,关于子组件怎么调整大小呢,可以使用这个&lt;code&gt;childAspectRatio&lt;/code&gt;属性&lt;/p&gt;
&lt;p&gt;你看右边的界面像不像pinterest的界面(Pinterest就是一个插画平台,上面不仅有画师分享的作品还有设计师)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508231808395.webp&quot; alt=&quot;image-20260508231808395&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;customscrollview&quot;&gt;CustomScrollView&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#customscrollview&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;CustomScrollView&lt;/code&gt; 的 &lt;code&gt;slivers&lt;/code&gt; 属性&lt;strong&gt;只接受 Sliver 系列的组件&lt;/strong&gt;。普通 Widget（如 &lt;code&gt;Container&lt;/code&gt;、&lt;code&gt;Column&lt;/code&gt;）不能直接放入，必须通过 &lt;code&gt;SliverToBoxAdapter&lt;/code&gt; 包装转换。&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260508232450154.webp&quot; alt=&quot;image-20260508232450154&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515144533508.webp&quot; alt=&quot;image-20260515144533508&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;普通 Widget&lt;/th&gt;&lt;th&gt;对应 Sliver&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ListView&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SliverList&lt;/code&gt;&lt;/td&gt;&lt;td&gt;垂直列表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;GridView&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SliverGrid&lt;/code&gt;&lt;/td&gt;&lt;td&gt;网格布局&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;AppBar&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;SliverAppBar&lt;/code&gt;&lt;/td&gt;&lt;td&gt;可折叠吸顶栏&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;任意 Widget&lt;/td&gt;&lt;td&gt;&lt;code&gt;SliverToBoxAdapter&lt;/code&gt;&lt;/td&gt;&lt;td&gt;包装单块非重复内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;自定义吸顶&lt;/td&gt;&lt;td&gt;&lt;code&gt;SliverPersistentHeader&lt;/code&gt;&lt;/td&gt;&lt;td&gt;实现任意组件吸顶&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;通常像淘宝这样的就遵循这样的结构&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 轮播图&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 吸顶分类栏&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;SliverList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 列表&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;slivertoboxadapter轮播图的容器&quot;&gt;SliverToBoxAdapter轮播图的容器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#slivertoboxadapter轮播图的容器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;作用&lt;/strong&gt;：将普通 Widget（如 &lt;code&gt;PageView&lt;/code&gt; 轮播图）转换为 Sliver，使其能融入 CustomScrollView 的滚动体系。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只能包裹&lt;strong&gt;单个&lt;/strong&gt;非重复内容&lt;/li&gt;
&lt;li&gt;适合 Banner、间距、标题栏等&quot;一次性&quot;内容&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//ScrollController _scrollController = ScrollController(); //滚动控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515145853214.webp&quot; alt=&quot;image-20260515145853214&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h4 id=&quot;sliverpersistentheader粘性吸顶分类&quot;&gt;SliverpersistentHeader粘性吸顶分类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#sliverpersistentheader粘性吸顶分类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;作用&lt;/strong&gt;：让&lt;strong&gt;任意 Widget&lt;/strong&gt; 在滚动到顶部时吸顶固定，比 &lt;code&gt;SliverAppBar&lt;/code&gt; 更灵活。常用于分类筛选栏、频道 Tab。&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515150905873.webp&quot; alt=&quot;image-20260515150905873&quot; style=&quot;zoom: 67%;&quot;&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//ScrollController _scrollController = ScrollController(); //滚动控制器&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部轮播图&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//粘性吸顶&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//自定义委托&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;注意,对于pinned参数:&lt;/p&gt;
&lt;p&gt;pinned: true  表示 到顶部后固定&lt;/p&gt;
&lt;p&gt;pinned: false 表示 向下滚动时会直接滑走&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              pinned&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                  &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//是否固定在顶部,如果设置为true则header会一直固定在顶部,直到下一个header出现时才会被替换掉,如果设置为false则header会随着滚动一起滚动,不会固定在顶部&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515170337436.webp&quot; alt=&quot;image-20260515170337436&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;&lt;strong&gt;必须自定义 &lt;code&gt;SliverPersistentHeaderDelegate&lt;/code&gt;&lt;/strong&gt;，核心参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;minExtent&lt;/code&gt;：吸顶后的最小高度&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maxExtent&lt;/code&gt;：展开时的最大高度&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shrinkOffset&lt;/code&gt;：当前收缩偏移量（可用于做透明度/缩放动画）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//返回构建的widget对象&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;sliverlist列表&quot;&gt;SliverList列表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#sliverlist列表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515164940382.webp&quot; alt=&quot;image-20260515164940382&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部内容&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//之间的空白区域也需要用Sliver来实现,这里我们用一个SizedBox来占位,设置高度为10.&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              
            &lt;span class=&quot;token class-name&quot;&gt;SliverList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;separated&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;聊天消息 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              separatorBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; content&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这里必须要继承SliverPersistentHeaderDelegate来实现吸顶效果,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//并且需要重写build方法来构建header的内容,重写maxExtent和minExtent来设置header的最大和最小高度,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//以及重写shouldRebuild来决定是否需要重新构建header,一般为false以提高性能,因为header内容通常不需要根据滚动状态改变&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类数量&lt;/span&gt;
        scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平滚动&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//itemBuilder的两个参数分别是上下文和索引,这里我们根据索引来构建每个分类的内容,比如显示分类名称等&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//用(){}回调函数的方式来构建每个分类的内容,这里我们简单地用一个Container来显示分类名称,并设置背景颜色和文本样式等&lt;/span&gt;
        itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类的宽度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类之间的间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内容居中&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类块颜色&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;分类 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里shouldRebuild代表是否需要重新构建,如果返回true则每次滚动都会调用build方法重新构建header,如果返回false则只会在第一次构建时调用build方法,之后滚动时不会调用build方法&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//所以如果header内容不需要根据滚动状态改变则可以返回false以提高性能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;slivergrid宫格&quot;&gt;SliverGrid宫格&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#slivergrid宫格&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515170009435.webp&quot; alt=&quot;image-20260515170009435&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部内容&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//之间的空白区域也需要用Sliver来实现,这里我们用一个SizedBox来占位,设置高度为10.&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;聊天消息 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这里必须要继承SliverPersistentHeaderDelegate来实现吸顶效果,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//并且需要重写build方法来构建header的内容,重写maxExtent和minExtent来设置header的最大和最小高度,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//以及重写shouldRebuild来决定是否需要重新构建header,一般为false以提高性能,因为header内容通常不需要根据滚动状态改变&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类数量&lt;/span&gt;
        scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平滚动&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//itemBuilder的两个参数分别是上下文和索引,这里我们根据索引来构建每个分类的内容,比如显示分类名称等&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//用(){}回调函数的方式来构建每个分类的内容,这里我们简单地用一个Container来显示分类名称,并设置背景颜色和文本样式等&lt;/span&gt;
        itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类的宽度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类之间的间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内容居中&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类块颜色&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;分类 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里shouldRebuild代表是否需要重新构建,如果返回true则每次滚动都会调用build方法重新构建header,如果返回false则只会在第一次构建时调用build方法,之后滚动时不会调用build方法&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//所以如果header内容不需要根据滚动状态改变则可以返回false以提高性能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;pageview&quot;&gt;PageView&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pageview&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;PageView&lt;/code&gt; 是 Flutter 中实现&lt;strong&gt;横向/纵向翻页滑动&lt;/strong&gt;的核心组件，常用于轮播图、引导页、Tab 内容切换等场景&lt;/p&gt;
&lt;p&gt;作用: 用于实现分页滚动视图的核心组件&lt;/p&gt;
&lt;p&gt;方式: 提供多种构建方式,默认构造范式,Pageview.builder等&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;构造函数&lt;/th&gt;&lt;th&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PageView()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;页面数量固定且少&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PageView.builder()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;页面数量多或动态数据（懒加载）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;PageView.custom()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;需要完全自定义子项控制&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部内容&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//PageView轮播图&lt;/span&gt;
                  itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                        &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;轮播图 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                          fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//之间的空白区域也需要用Sliver来实现,这里我们用一个SizedBox来占位,设置高度为10.&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              pinned&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                  &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//是否固定在顶部,如果设置为true则header会一直固定在顶部,直到下一个header出现时才会被替换掉,如果设置为false则header会随着滚动一起滚动,不会固定在顶部&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;聊天消息 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这里必须要继承SliverPersistentHeaderDelegate来实现吸顶效果,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//并且需要重写build方法来构建header的内容,重写maxExtent和minExtent来设置header的最大和最小高度,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//以及重写shouldRebuild来决定是否需要重新构建header,一般为false以提高性能,因为header内容通常不需要根据滚动状态改变&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类数量&lt;/span&gt;
        scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平滚动&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//itemBuilder的两个参数分别是上下文和索引,这里我们根据索引来构建每个分类的内容,比如显示分类名称等&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//用(){}回调函数的方式来构建每个分类的内容,这里我们简单地用一个Container来显示分类名称,并设置背景颜色和文本样式等&lt;/span&gt;
        itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类的宽度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类之间的间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内容居中&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类块颜色&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;分类 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里shouldRebuild代表是否需要重新构建,如果返回true则每次滚动都会调用build方法重新构建header,如果返回false则只会在第一次构建时调用build方法,之后滚动时不会调用build方法&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//所以如果header内容不需要根据滚动状态改变则可以返回false以提高性能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;pageview跳转控制&quot;&gt;PageView跳转控制&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pageview跳转控制&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515193015231.webp&quot; alt=&quot;image-20260515193015231&quot; style=&quot;zoom: 80%;&quot;&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  int _currentIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;PageController&lt;/span&gt; _controller &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部内容&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Stack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
                  &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      controller&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _controller&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token comment&quot;&gt;//当页面切换时,会调用onPageChanged方法,这里我们用setState来更新当前索引&lt;/span&gt;
                      &lt;span class=&quot;token comment&quot;&gt;//以便小圆点能够正确显示当前页面的索引,同时也可以在其他地方根据当前索引来显示对应的内容等&lt;/span&gt;
                      onPageChanged&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                          _currentIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token comment&quot;&gt;//PageView轮播图&lt;/span&gt;
                      itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                            &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;轮播图 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                              fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token class-name&quot;&gt;Positioned&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    bottom&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                        mainAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GestureDetector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                            onTap&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                              _controller&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;animateToPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                                index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                                duration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;microseconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                                curve&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Curves&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;linear&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;//点击小圆点切换轮播图,这里我们用setState来更新当前索引并调用jumpToPage方法来切换到对应的页面&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;//但是这种切换方式很生硬,我们用animateToPage方法来切换轮播图,而setState只需要更新当前索引即可&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;//因为animateToPage方法会在切换完成后自动调用setState来更新当前索引,所以我们不需要在onTap中调用setState来更新当前索引,只需要调用animateToPage方法来切换轮播图即可,这样切换效果会更平滑&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;// setState(() {&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;//   _currentIndex = index;&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;//   _controller.jumpToPage(index);&lt;/span&gt;
                              &lt;span class=&quot;token comment&quot;&gt;// });&lt;/span&gt;
                            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                              margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _currentIndex &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; index
                                    &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red
                                    &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                                borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//之间的空白区域也需要用Sliver来实现,这里我们用一个SizedBox来占位,设置高度为10.&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              pinned&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                  &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//是否固定在顶部,如果设置为true则header会一直固定在顶部,直到下一个header出现时才会被替换掉,如果设置为false则header会随着滚动一起滚动,不会固定在顶部&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;聊天消息 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这里必须要继承SliverPersistentHeaderDelegate来实现吸顶效果,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//并且需要重写build方法来构建header的内容,重写maxExtent和minExtent来设置header的最大和最小高度,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//以及重写shouldRebuild来决定是否需要重新构建header,一般为false以提高性能,因为header内容通常不需要根据滚动状态改变&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类数量&lt;/span&gt;
        scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平滚动&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//itemBuilder的两个参数分别是上下文和索引,这里我们根据索引来构建每个分类的内容,比如显示分类名称等&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//用(){}回调函数的方式来构建每个分类的内容,这里我们简单地用一个Container来显示分类名称,并设置背景颜色和文本样式等&lt;/span&gt;
        itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类的宽度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类之间的间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内容居中&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类块颜色&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;分类 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里shouldRebuild代表是否需要重新构建,如果返回true则每次滚动都会调用build方法重新构建header,如果返回false则只会在第一次构建时调用build方法,之后滚动时不会调用build方法&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//所以如果header内容不需要根据滚动状态改变则可以返回false以提高性能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%B8%B8%E7%94%A8%E7%9A%84%E5%90%84%E7%A7%8D%E7%BB%84%E4%BB%B6/image-20260515200953223.webp&quot; alt=&quot;image-20260515200953223&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h4 id=&quot;卡片层叠效果viewportfraction&quot;&gt;卡片层叠效果（viewportFraction）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#卡片层叠效果viewportfraction&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  late &lt;span class=&quot;token class-name&quot;&gt;PageController&lt;/span&gt; _controller&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    _controller &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageController&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;viewportFraction&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CustomScrollView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          slivers&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//顶部内容&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;260&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//卡片堆叠效果&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;PageView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  controller&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _controller&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AnimatedBuilder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                      animation&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; _controller&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      builder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                        double value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_controller&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;position&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;haveDimensions&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                          value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_controller&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;page&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;abs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                          value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;clamp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 缩放系数&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
                        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Transform&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scale&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;scale&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; child&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                        margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                          borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                              &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;primaries&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;primaries&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//之间的空白区域也需要用Sliver来实现,这里我们用一个SizedBox来占位,设置高度为10.&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeader&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              pinned&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                  &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//是否固定在顶部,如果设置为true则header会一直固定在顶部,直到下一个header出现时才会被替换掉,如果设置为false则header会随着滚动一起滚动,不会固定在顶部&lt;/span&gt;
              delegate&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_StickyCategory&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//实现吸顶效果的delegate&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverToBoxAdapter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;SliverGrid&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;count&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              crossAxisCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              mainAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              crossAxisSpacing&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;generate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blueGrey&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;聊天消息 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                    style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BottomAppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;© 2026 终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这里必须要继承SliverPersistentHeaderDelegate来实现吸顶效果,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//并且需要重写build方法来构建header的内容,重写maxExtent和minExtent来设置header的最大和最小高度,&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//以及重写shouldRebuild来决定是否需要重新构建header,一般为false以提高性能,因为header内容通常不需要根据滚动状态改变&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _StickyCategory &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    double shrinkOffset&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    bool overlapsContent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类背景颜色&lt;/span&gt;
      child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ListView&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        itemCount&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类数量&lt;/span&gt;
        scrollDirection&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Axis&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平滚动&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//itemBuilder的两个参数分别是上下文和索引,这里我们根据索引来构建每个分类的内容,比如显示分类名称等&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//用(){}回调函数的方式来构建每个分类的内容,这里我们简单地用一个Container来显示分类名称,并设置背景颜色和文本样式等&lt;/span&gt;
        itemBuilder&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int index&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类的宽度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//每个分类之间的间距&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//内容居中&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//分类块颜色&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;分类 &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement maxExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最大展开高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; maxExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// TODO: implement minExtent&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//最小折叠高度&lt;/span&gt;
  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; minExtent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  bool &lt;span class=&quot;token function&quot;&gt;shouldRebuild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;SliverPersistentHeaderDelegate&lt;/span&gt; oldDelegate&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement shouldRebuild&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里shouldRebuild代表是否需要重新构建,如果返回true则每次滚动都会调用build方法重新构建header,如果返回false则只会在第一次构建时调用build方法,之后滚动时不会调用build方法&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//所以如果header内容不需要根据滚动状态改变则可以返回false以提高性能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>Azure的AI-Speech服务使用</title><link>https://huyangpahuo.vercel.app/posts/azure-de-ai-speech-fu-wu-shi-yong/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/azure-de-ai-speech-fu-wu-shi-yong/</guid><description>本篇讲如何在airi中使用Azure的ai语言服务</description><pubDate>Sat, 25 Apr 2026 19:48:40 GMT</pubDate><content:encoded>&lt;h1 id=&quot;尝试使用azure提供的ai-语音服务让airi说话&quot;&gt;尝试使用Azure提供的ai 语音服务让airi说话&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#尝试使用azure提供的ai-语音服务让airi说话&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;制作api&quot;&gt;制作api&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#制作api&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先在Azure的搜索栏搜索Speech然后点击进入&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425195415495.webp&quot; alt=&quot;image-20260425195415495&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425195235855.webp&quot; alt=&quot;image-20260425195235855&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Subscription（订阅）&lt;/strong&gt; :    学生订阅（Azure for Students）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource group（资源组）&lt;/strong&gt;:  没有就点「Create new」,随便起名，比如：&lt;code&gt;airi-ai&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Region（地区）&lt;/strong&gt;:   (Asia Pacific) Japan West（亚太地区）日本西&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name（名称）&lt;/strong&gt;  :   随便起，比如：&lt;code&gt;airi-tts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pricing（价格层）&lt;/strong&gt;：&lt;strong&gt;Free F0（免费层）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后点：&lt;br&gt;
&lt;strong&gt;Review + Create → Create&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425201240192.webp&quot; alt=&quot;image-20260425201240192&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们打开刚才创建的airi-ai  &lt;code&gt;Speech service&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425201728523.webp&quot; alt=&quot;image-20260425201728523&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到&lt;code&gt;keys and endpointy&lt;/code&gt;秘钥与端点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425201803900.webp&quot; alt=&quot;image-20260425201803900&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后key 1和key 2随便挑一个复制&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425202126231.webp&quot; alt=&quot;image-20260425202126231&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;打开airi&quot;&gt;打开Airi&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#打开airi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425202210977.webp&quot; alt=&quot;image-20260425202210977&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后挑一个你喜欢的声音然后启用这个模块就行了&lt;/p&gt;
&lt;p&gt;我个人觉得这几个声音很符合airi的气质&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;xiaoshuang 

xiaoyi

xiaozhen
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Azure/Azure%E7%9A%84AI-Speech%E6%9C%8D%E5%8A%A1%E4%BD%BF%E7%94%A8/image-20260425203539010.webp&quot; alt=&quot;image-20260425203539010&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Azure</category><category>Airi</category><category>TTS</category></item><item><title>flutter---Container和Column和Row</title><link>https://huyangpahuo.vercel.app/posts/flutter-container-he-column-he-row/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-container-he-column-he-row/</guid><description>本篇继续学习container ,column 和row这三个组件</description><pubDate>Sat, 25 Apr 2026 14:55:58 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来了解一些flutter的组件&quot;&gt;今天来了解一些flutter的组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来了解一些flutter的组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425145808331.webp&quot; alt=&quot;image-20260425145808331&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;container布局组件&quot;&gt;Container(布局组件)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#container布局组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;定义：Container是功能丰富的布局组件，是个多功能组合容器&lt;/p&gt;
&lt;p&gt;尺寸控制：可通过多种方式定义大小，有明确优先级规则&lt;/p&gt;
&lt;p&gt;优先级：明确宽高&gt;constraints约束&gt;父组件约束&gt;自适应组件大小&lt;/p&gt;
&lt;p&gt;装饰系统：通过decoration属性实现视觉效果，但和color属性互斥&lt;/p&gt;
&lt;p&gt;布局控制：提供内外边距和对齐方式&lt;/p&gt;
&lt;p&gt;可选变化：支持绘制时进行矩阵变换，如旋转、倾斜、平移等&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425150304387.webp&quot; alt=&quot;image-20260425150304387&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425150934912.webp&quot; alt=&quot;image-20260425150934912&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,我们可以看到出现了红色方块,这个是用color来填充颜色的,而我们还有一种方式就是decoration装饰器&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          transform&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Matrix4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rotationZ&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 旋转,弧度并非角度&lt;/span&gt;
          margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 外边距,这个组件“外面”的间距（和父组件之间的距离）&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//这个是子组件的对齐方式即文本居中&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//装饰器&lt;/span&gt;
            color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//填充颜色&lt;/span&gt;
            borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 圆角&lt;/span&gt;
            border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//黑色边框，宽度3&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;// 文本样式&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425153447681.webp&quot; alt=&quot;image-20260425153447681&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;center居中组件&quot;&gt;Center(居中组件)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#center居中组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Center：将其子组件在父容器的空间内进行水平和垂直方向上的居中排列&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意事项：Center不能设置宽高，Center的最终大小取决于其父组件传递给它的约束，Center会向它的父组件申请尽可能大的空间&lt;/p&gt;
&lt;p&gt;实现固定宽且居中的组件：Center去包裹一个具有固定宽高的子组件。Container/SizeBox&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            transform&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Matrix4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rotationZ&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 旋转,弧度并非角度&lt;/span&gt;
            margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 外边距,这个组件“外面”的间距（和父组件之间的距离）&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//这个是子组件的对齐方式即文本居中&lt;/span&gt;
            width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度&lt;/span&gt;
            height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度&lt;/span&gt;
            decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//装饰器&lt;/span&gt;
              color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//填充颜色&lt;/span&gt;
              borderRadius&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BorderRadius&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;circular&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 圆角&lt;/span&gt;
              border&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Border&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//黑色边框，宽度3&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token comment&quot;&gt;// 文本样式&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;white&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                fontWeight&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FontWeight&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;bold&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425154721577.webp&quot; alt=&quot;image-20260425154721577&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;align对齐组件&quot;&gt;Align(对齐组件)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#align对齐组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;作用：精确控制其子组件在父容器空间内的对齐位置&lt;/p&gt;
&lt;p&gt;alignment(对齐方式)：子组件在父容器内的对齐方式&lt;/p&gt;
&lt;p&gt;widthFactor(宽度因子）：Align的宽度将是子组件宽度乘以该因子&lt;/p&gt;
&lt;p&gt;heightFactor(高度因子)：Align的高度将是子组件高度乘以该因子&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;black&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Align&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;// 使用Align组件来控制IconButton的对齐方式&lt;/span&gt;
            alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 设置对齐方式为居中&lt;/span&gt;
            widthFactor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 设置宽度因子为1，使IconButton占满父级宽度,默认是null，表示根据子组件的宽度来确定父组件的宽度&lt;/span&gt;
            heightFactor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 设置高度因子为1，使IconButton占满父级高度,默认是null，表示根据子组件的高度来确定父组件的高度&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;IconButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token comment&quot;&gt;// 处理点击事件&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              icon&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Icon&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                &lt;span class=&quot;token class-name&quot;&gt;Icons&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;connecting_airports&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                size&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425161331502.webp&quot; alt=&quot;image-20260425161331502&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与Center的区别：Center是Align的一个特例，继承自Align，相当于一个将alignment属性为居中的Align.Center&lt;/li&gt;
&lt;li&gt;使用场景：当需要将个组件放置在父容器的特定角落，Align是理想选择&lt;/li&gt;
&lt;li&gt;动态尺寸：通过widthFactor和heightFactor，可以创建出与子组件大小成比例的容器，动态布局中很有用&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;padding内边距组件&quot;&gt;Padding(内边距组件)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#padding内边距组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;单独设置某个或者某几个方向的边距&lt;/p&gt;
&lt;h3 id=&quot;edgeinsetsall&quot;&gt;EdgeInsets.all&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#edgeinsetsall&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;teal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;all&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//这里all就是所有方向&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425164406780.webp&quot; alt=&quot;image-20260425164406780&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;edgeinsetsonly&quot;&gt;EdgeInsets.only&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#edgeinsetsonly&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;当然也可以指定那些&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;teal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; right&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//使用only来指定对应方向的边距&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们也可以,使用&lt;code&gt;Edgelnsets.symmetric&lt;/code&gt;属性进行对称设置，&lt;code&gt;vertical(纵向）&lt;/code&gt;、&lt;code&gt;horizontal(横向）&lt;/code&gt;来直接同时改两个方向&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;teal&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Padding&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            padding&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;symmetric&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;horizontal&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; vertical&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cyanAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425165421128.webp&quot; alt=&quot;image-20260425165421128&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;column垂直线性布局&quot;&gt;Column(垂直线性布局)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#column垂直线性布局&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425170319112.webp&quot; alt=&quot;image-20260425170319112&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425175014701.webp&quot; alt=&quot;image-20260425175014701&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;主轴&quot;&gt;主轴&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#主轴&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;主轴就是垂直的放在界面中间的轴&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425170620396.webp&quot; alt=&quot;image-20260425170620396&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//mainAxisAlignment: MainAxisAlignment.spaceAround,//环绕模式&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//mainAxisAlignment: MainAxisAlignment.spaceBetween,//两头对齐&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//mainAxisAlignment: MainAxisAlignment.spaceEvenly, //均分模式&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//mainAxisAlignment: MainAxisAlignment.center,//居中模式&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//mainAxisAlignment: MainAxisAlignment.start, //从头对齐&lt;/span&gt;
            mainAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;end&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//从尾对齐&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pink&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425172829780.webp&quot; alt=&quot;image-20260425172829780&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;mainaxisaligment&quot;&gt;mainAxisAligment&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mainaxisaligment&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这里假设column有如下的资&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;C&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;start&quot;&gt;&lt;code&gt;start&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#start&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.start&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;A
B
C


（全部挤在上面）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;center&quot;&gt;&lt;code&gt;center&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#center&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.center&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;
A
B
C


（整体居中）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;end&quot;&gt;&lt;code&gt;end&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#end&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.end&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;

A
B
C
（在底部）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;spacebetween&quot;&gt;&lt;code&gt;spaceBetween&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#spacebetween&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.spaceBetween&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;A


B


C
（首尾贴边，中间平均分）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;spacearound&quot;&gt;&lt;code&gt;spaceAround&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#spacearound&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.spaceAround&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;A

B

C

（上下都有间距）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;spaceevenly&quot;&gt;&lt;code&gt;spaceEvenly&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#spaceevenly&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;mainAxisAlignment: MainAxisAlignment.spaceEvenly&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;A

B

C

（间距完全一样）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;交叉轴&quot;&gt;交叉轴&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#交叉轴&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425173654371.webp&quot; alt=&quot;image-20260425173654371&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;属性&lt;/th&gt;&lt;th&gt;控制方向&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;mainAxisAlignment&lt;/td&gt;&lt;td&gt;上下（主轴）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;crossAxisAlignment&lt;/td&gt;&lt;td&gt;左右（交叉轴）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Column&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.center, //水平居中&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.start, //水平靠左&lt;/span&gt;
            crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;end&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平靠右&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425174129665.webp&quot; alt=&quot;image-20260425174129665&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;crossaxisalignment&quot;&gt;crossAxisAlignment&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#crossaxisalignment&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;start-1&quot;&gt;&lt;code&gt;start&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#start-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;crossAxisAlignment: CrossAxisAlignment.start&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;A
B
C
（左对齐）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;center-1&quot;&gt;&lt;code&gt;center&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#center-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;crossAxisAlignment: CrossAxisAlignment.center&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;   A
   B
   C
（水平居中）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;end-1&quot;&gt;&lt;code&gt;end&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#end-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;crossAxisAlignment: CrossAxisAlignment.end&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;        A
        B
        C
（右对齐）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;stretch&quot;&gt;&lt;code&gt;stretch&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#stretch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;crossAxisAlignment: CrossAxisAlignment.stretch&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个不好描述,大概就是如字面意思stretch延伸&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260425174824933.webp&quot; alt=&quot;image-20260425174824933&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h2 id=&quot;row水平线性布局&quot;&gt;Row(水平线性布局)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#row水平线性布局&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260427102342894.webp&quot; alt=&quot;image-20260427102342894&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;主轴-1&quot;&gt;主轴&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#主轴-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;刚才我们学的都是竖直排列的,现在我们看看水平排列的吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260426111806727.webp&quot; alt=&quot;image-20260426111806727&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个和Column几乎一模一样,连属性都可以复用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260426112350098.webp&quot; alt=&quot;image-20260426112350098&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平居中&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.start, //水平靠左&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.end, //水平靠右&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.stretch,&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;sizedbox&quot;&gt;SizedBox&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#sizedbox&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;当然我们也可以手动增加边距使用SizedBox&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平居中&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.start, //水平靠左&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.end, //水平靠右&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.stretch,&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//添加水平间距&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;SizedBox&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260426112716670.webp&quot; alt=&quot;image-20260426112716670&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;margin&quot;&gt;margin&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#margin&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;还有一种方式就是使用margin&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平居中&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.start, //水平靠左&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.end, //水平靠右&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.stretch,&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//SizedBox(width: 10), //添加水平间距&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//SizedBox(width: 10),&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//SizedBox(width: 10),&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//SizedBox(width: 10),&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//SizedBox(width: 10),&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                margin&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;only&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;left&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260426113508476.webp&quot; alt=&quot;image-20260426113508476&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;交叉轴-1&quot;&gt;交叉轴&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#交叉轴-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和刚才的一样的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260427101954677.webp&quot; alt=&quot;image-20260427101954677&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//宽度占满父组件&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; double&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;infinity&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//高度占满父组件&lt;/span&gt;
          decoration&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;BoxDecoration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tealAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.center, //水平居中&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//crossAxisAlignment: CrossAxisAlignment.start, //水平靠左&lt;/span&gt;
            crossAxisAlignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;CrossAxisAlignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;end&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//水平靠右&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;blue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;green&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;yellow&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;orange&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Color&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromARGB&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;255&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;235&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;29&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;98&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;purple&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---Container%E5%92%8CColumn%E5%92%8CRow/image-20260427102232760.webp&quot; alt=&quot;image-20260427102232760&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>使用VPS搭建VPN</title><link>https://huyangpahuo.vercel.app/posts/shi-yong-vps-da-jian-vpn/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shi-yong-vps-da-jian-vpn/</guid><description>本篇讲在VPS使用Xray搭建VLESS-Reality节点过程</description><pubDate>Thu, 23 Apr 2026 16:59:37 GMT</pubDate><content:encoded>&lt;h1 id=&quot;购买的外国地区的vps也称为esc可以用来搭建vpn&quot;&gt;购买的外国地区的VPS(也称为ESC)可以用来搭建VPN&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#购买的外国地区的vps也称为esc可以用来搭建vpn&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;我们首先在termius或者openssh终端连接VPS服务器&lt;/p&gt;
&lt;h2 id=&quot;下载xray&quot;&gt;下载Xray&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载xray&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;bash&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-Ls&lt;/span&gt; https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后一路回车确定&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20260423171703902.webp&quot; alt=&quot;image-20260423171703902&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20260423171840149.webp&quot; alt=&quot;image-20260423171840149&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;选择存储数据库&quot;&gt;选择存储数据库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#选择存储数据库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们选择sqlite  也就是1&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;═══════════════════════════════════════════
     Database Selection                    
═══════════════════════════════════════════
  &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; SQLite     &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;default — recommended &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt; clients&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; PostgreSQL &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;recommended &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; high client counts / many nodes&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
Choose &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;: 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;端口初始化&quot;&gt;端口初始化&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#端口初始化&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Would you like to customize the Panel Port settings? (If not, a random port will be applied) [y/n]:  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;输入y 同意面板端口初始化并回车&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;设置端口&quot;&gt;设置端口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#设置端口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;要求设置面板的&lt;strong&gt;访问端口&lt;/strong&gt;（比如输入 &lt;code&gt;2053&lt;/code&gt; 或者 &lt;code&gt;8080&lt;/code&gt;，范围在 1-65535 之间，不要用 80 或 443）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Please set up the panel port: 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;输入8080并回车&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;ssl证书生成&quot;&gt;SSL证书生成&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ssl证书生成&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;═══════════════════════════════════════════    

SSL Certificate Setup (MANDATORY)   

═══════════════════════════════════════════ 

For security, SSL certificate is required for all panels. 

Let&apos;s Encrypt now supports both domains and IP addresses! 

Choose SSL certificate setup method: 

1. Let&apos;s Encrypt for Domain (90-day validity, auto-renews) 
2. Let&apos;s Encrypt for IP Address (6-day validity, auto-renews) 
3. Custom SSL Certificate (Path to existing files) 

Note: Options 1 &amp;#x26; 2 require port 80 open. Option 3 requires manual paths. Choose an option (default 2 for IP):
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;直接输入回车默认选项2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SSL证书是让我们访问这个面板可以通过https,如果没有的话就是http明文很不安全&lt;/p&gt;
&lt;p&gt;所以最简单的方法是使用系统直接为IP地址生成的证书&lt;/p&gt;
&lt;p&gt;有的时候会失败所以我们还需要自己重新生成&lt;/p&gt;
&lt;h3 id=&quot;ipv6相关&quot;&gt;IPV6相关&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ipv6相关&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Do you have an IPv6 address to include? (leave empty to skip): 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;直接输入回车键默认&lt;/strong&gt;,主要是这玩意太麻烦了不如直接用IPV4&lt;/p&gt;
&lt;h3 id=&quot;申请证书端口&quot;&gt;申请证书端口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#申请证书端口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Port to use for ACME HTTP-01 listener (default 80):
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;直接输入回车默认&lt;/strong&gt;,这个是申请安全证书用80端口&lt;/p&gt;
&lt;p&gt;然后就完成了&lt;/p&gt;
&lt;h2 id=&quot;此时我们需要调整几个东西&quot;&gt;此时我们需要调整几个东西&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#此时我们需要调整几个东西&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们输入&lt;code&gt;x-ui&lt;/code&gt;打开xray ui面板&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;╔────────────────────────────────────────────────╗
│  3X-UI Panel Management Script                │
│  &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;. Exit Script                               │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;. Install                                   │
│  &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;. Update                                    │
│  &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;. Update to Dev Channel &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;latest commit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;     │
│  &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;. Update Menu                               │
│  &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;. Legacy Version                            │
│  &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;. Uninstall                                 │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;. Reset Username &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; Password                 │
│  &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;. Reset Web Base Path                       │
│  &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;. Reset Settings                            │
│  &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;. Change Port                              │
│  &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;. View Current Settings                    │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;. Start                                    │
│  &lt;span class=&quot;token number&quot;&gt;13&lt;/span&gt;. Stop                                     │
│  &lt;span class=&quot;token number&quot;&gt;14&lt;/span&gt;. Restart                                  │
&lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt;  &lt;span class=&quot;token number&quot;&gt;15&lt;/span&gt;. Restart Xray                             │
│  &lt;span class=&quot;token number&quot;&gt;16&lt;/span&gt;. Check Status                             │
│  &lt;span class=&quot;token number&quot;&gt;17&lt;/span&gt;. Logs Management                          │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;. Enable Autostart                         │
│  &lt;span class=&quot;token number&quot;&gt;19&lt;/span&gt;. Disable Autostart                        │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;. SSL Certificate Management               │
│  &lt;span class=&quot;token number&quot;&gt;21&lt;/span&gt;. Cloudflare SSL Certificate               │
│  &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;. IP Limit Management                      │
│  &lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt;. Firewall Management                      │
│  &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;. SSH Port Forwarding Management           │
│  &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;. PostgreSQL Management                    │
│────────────────────────────────────────────────│
│  &lt;span class=&quot;token number&quot;&gt;26&lt;/span&gt;. Enable BBR                               │
│  &lt;span class=&quot;token number&quot;&gt;27&lt;/span&gt;. Update Geo Files                         │
│  &lt;span class=&quot;token number&quot;&gt;28&lt;/span&gt;. Speedtest by Ookla                       │
╚────────────────────────────────────────────────╝
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;重置用户名和密码&quot;&gt;重置用户名和密码&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#重置用户名和密码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个是用于登录3x-ui面板时的用户名和密码&lt;/p&gt;
&lt;p&gt;选择&lt;code&gt;7. Reset Username &amp;#x26; Password &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;然后输入自己的密码和用户名(要是忘了还可以重置)&lt;/p&gt;
&lt;h3 id=&quot;重置web-base-path&quot;&gt;重置Web base path&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#重置web-base-path&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;选择&lt;code&gt;8. Reset Web Base Path&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;也就是我们生成的网址的后面的一堆字母和数字,重置后更安全一些&lt;/p&gt;
&lt;h3 id=&quot;重置或生成ssl证书&quot;&gt;重置或生成SSL证书&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#重置或生成ssl证书&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;选择&lt;code&gt;20. SSL Certificate Management&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;Please enter your selection &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;-28&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;: &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
        &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;. Get SSL &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Domain&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;. Revoke &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt; Remove
        &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;. Force Renew
        &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;. Show Existing Domains
        &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;. Set Cert paths &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; the panel
        &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;. Get SSL &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; IP Address &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;-day cert, auto-renews&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;. Back to Main Menu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;选择选项&lt;code&gt;6.Get SSL for IP Address (6-day cert, auto-renews)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;完成后输入&lt;code&gt;x-ui settings&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;就可以查看&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;INF&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; current panel settings as follows:
Panel is secure with SSL
hasDefaultCredential: &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
port: &lt;span class=&quot;token number&quot;&gt;8080&lt;/span&gt;
webBasePath: /XXXXX/ 
Database: SQLite &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;/etc/x-ui/x-ui.db&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
Access URL: https://XXXXX:8080/XXXXXX/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;防火墙设置&quot;&gt;防火墙设置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#防火墙设置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;有的不需要开,比如阿里云和腾讯云会自带防火墙,我们开了反而可能把我们自己拦在外面&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;ufw allow &lt;span class=&quot;token number&quot;&gt;8080&lt;/span&gt;/tcp
ufw allow &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;/tcp
ufw allow &lt;span class=&quot;token number&quot;&gt;443&lt;/span&gt;/tcp
ufw reload
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;创建节点&quot;&gt;创建节点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;添加入站&quot;&gt;添加入站&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加入站&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先在&lt;code&gt;入站&lt;/code&gt;点击&lt;code&gt;添加入站&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012140618874.webp&quot; alt=&quot;image-20261012140618874&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择reality加密&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012140702080.webp&quot; alt=&quot;image-20261012140702080&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012141409717.webp&quot; alt=&quot;image-20261012141409717&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;添加客户端&quot;&gt;添加客户端&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加客户端&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们需要关联刚才的入站&lt;/p&gt;
&lt;p&gt;邮箱不用管(因为我们是自用不是卖梯子...)&lt;/p&gt;
&lt;p&gt;然后编辑客户端&lt;/p&gt;
&lt;p&gt;​    &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012144527057.webp&quot; alt=&quot;image-20261012144527057&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;基本界面关联入站&quot;&gt;基本界面关联入站&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#基本界面关联入站&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012141534570.webp&quot; alt=&quot;image-20261012141534570&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;凭据选择流控模式&quot;&gt;凭据选择流控模式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#凭据选择流控模式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这里有两种流控模式&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;





























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;对比&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;xtls-rprx-vision&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;xtls-rprx-vision-udp443&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;Vision 流控优化&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;支持&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;支持&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;UDP 443 / QUIC&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;拦截，促使浏览器回退到普通HTTPS&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;不拦截&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;一般网页浏览&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;推荐&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;通常没必要特意使用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;必须使用QUIC的应用&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;可能受影响&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;更适合&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;选择&lt;code&gt;xtls-rprx-vision&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;减少性能开销： 在符合条件的 Linux + TCP + TLS/REALITY 场景中，Xray 可以利用内核的 &lt;code&gt;splice&lt;/code&gt; 机制转发加密数据，减少内存复制和上下文切换&lt;/p&gt;
&lt;p&gt;可能提高吞吐量： 对高流量传输有帮助，但不保证降低 ping&lt;/p&gt;
&lt;p&gt;影响 UDP 443： 标准 Vision 模式会拦截目标端口为 443 的 UDP 流量，促使浏览器回退到普通 HTTPS；部分强制使用 QUIC 的应用可能受到影响&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012144439615.webp&quot; alt=&quot;image-20261012144439615&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;二维码分享使用&quot;&gt;二维码分享使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二维码分享使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;或者点击那个复制键复制链接导入也行&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012144805988.webp&quot; alt=&quot;image-20261012144805988&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;协议转换&quot;&gt;协议转换&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#协议转换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于不同的客户端对不同的协议的支持不同,如我们Clash/Mihomo就不能直接用vless的链接和二维码&lt;/p&gt;
&lt;p&gt;所以我们需要转换协议&lt;/p&gt;
&lt;p&gt;在较旧的版本我们需要使用一些转换器例如&lt;a href=&quot;https://github.com/youshandefeiyang/sub-web-modify&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;sub-web-modify&lt;/a&gt;,但是现在这个已失效&lt;/p&gt;
&lt;p&gt;不过新版本的3X-UI面板自带了转化器&lt;/p&gt;
&lt;p&gt;我们需要在&lt;code&gt;面板设置&lt;/code&gt;-&gt;&lt;code&gt;订阅设置&lt;/code&gt;里找到&lt;code&gt;Clash/Mihomo&lt;/code&gt;选项并启用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012161314488.webp&quot; alt=&quot;image-20261012161314488&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012161340621.webp&quot; alt=&quot;image-20261012161340621&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012162354911.webp&quot; alt=&quot;image-20261012162354911&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;防火墙设置-1&quot;&gt;防火墙设置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#防火墙设置-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们需要在防火墙放行2096端口,否则其他人扫码无法使用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ufw allow 2096/tcp
ufw reload
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于腾讯和阿里云服务器我们需要手动添加	例如在阿里云服务器防火墙控制台里添加如下端口白名单&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012162936255.webp&quot; alt=&quot;image-20261012162936255&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们点击刚创建的客户端&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012161505158.webp&quot; alt=&quot;image-20261012161505158&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后找到clash相关,直接扫码用即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VPS%E6%90%AD%E5%BB%BAVPN/image-20261012161616680.webp&quot; alt=&quot;image-20261012161616680&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;对于节点比较卡的解决方案&quot;&gt;对于节点比较卡的解决方案&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于节点比较卡的解决方案&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;不过说实话,卡不卡很大程度取决于服务器配置和服务器厂商....&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;启用bbr-tcp拥塞算法&quot;&gt;启用BBR TCP拥塞算法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启用bbr-tcp拥塞算法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;检查当前-tcp-配置&quot;&gt;检查当前 TCP 配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检查当前-tcp-配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sysctl&lt;/span&gt; net.ipv4.tcp_congestion_control net.core.default_qdisc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;初始输出：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;net.ipv4.tcp_congestion_control &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cubic
net.core.default_qdisc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fq_codel
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;说明当前使用的是 &lt;code&gt;CUBIC&lt;/code&gt; 拥塞控制算法,默认队列调度器为 &lt;code&gt;fq_codel&lt;/code&gt;&lt;/p&gt;
&lt;h4 id=&quot;检查内核是否支持-bbr&quot;&gt;检查内核是否支持 BBR&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检查内核是否支持-bbr&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sysctl&lt;/span&gt; net.ipv4.tcp_available_congestion_control
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果输出中没有 &lt;code&gt;bbr&lt;/code&gt;,尝试加载 BBR 模块&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;modprobe tcp_bbr
&lt;span class=&quot;token function&quot;&gt;sysctl&lt;/span&gt; net.ipv4.tcp_available_congestion_control
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;本机加载成功后，输出为：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;net.ipv4.tcp_available_congestion_control &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; reno cubic bbr
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;说明系统现在可以使用 BBR&lt;/p&gt;
&lt;p&gt;如果提示找不到模块，需要进一步检查内核版本及对应模块是否已安装&lt;/p&gt;
&lt;h4 id=&quot;配置开机自动加载-bbr&quot;&gt;配置开机自动加载 BBR&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置开机自动加载-bbr&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;创建模块自动加载配置：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; /etc/modules-load.d/tcp_bbr.conf &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;EOF&apos;
tcp_bbr
EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这样系统启动时会尝试自动加载 &lt;code&gt;tcp_bbr&lt;/code&gt; 模块。&lt;/p&gt;
&lt;h4 id=&quot;启用-bbr-并持久化配置&quot;&gt;启用 BBR 并持久化配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启用-bbr-并持久化配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;创建 sysctl 配置文件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; /etc/sysctl.d/99-bbr.conf &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;EOF&apos;
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;应用配置&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sysctl&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--system&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里设置了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;net.ipv4.tcp_congestion_control=bbr&lt;/code&gt;：将 TCP 拥塞控制算法切换为 BBR&lt;/li&gt;
&lt;li&gt;&lt;code&gt;net.core.default_qdisc=fq&lt;/code&gt;：将默认队列调度器设置为 &lt;code&gt;fq&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配置保存在 &lt;code&gt;/etc/sysctl.d/99-bbr.conf&lt;/code&gt;，正常情况下重启后仍会生成&lt;/p&gt;
&lt;h4 id=&quot;验证是否启用成功&quot;&gt;验证是否启用成功&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#验证是否启用成功&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sysctl&lt;/span&gt; net.ipv4.tcp_congestion_control net.core.default_qdisc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;成功后的输出&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;net.ipv4.tcp_congestion_control &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; bbr
net.core.default_qdisc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; fq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;看到这两个结果，即表示当前配置已经生效&lt;/p&gt;
&lt;h4 id=&quot;注意事项&quot;&gt;注意事项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#注意事项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;modprobe tcp_bbr&lt;/code&gt; 负责加载模块,&lt;code&gt;/etc/modules-load.d/tcp_bbr.conf&lt;/code&gt; 负责设置开机自动加载&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/sysctl.d/99-bbr.conf&lt;/code&gt; 用于保存并持久化内核参数&lt;/li&gt;
&lt;li&gt;启用 BBR 可能改善部分网络环境下的 TCP 吞吐量,但不保证降低基础延迟或解决跨境线路绕路和丢包等问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;启用2g-swap缓存&quot;&gt;启用2G swap缓存&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启用2g-swap缓存&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; fallocate &lt;span class=&quot;token parameter variable&quot;&gt;-l&lt;/span&gt; 2G /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt; /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;mkswap&lt;/span&gt; /swapfile
&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;swapon&lt;/span&gt; /swapfile
&lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;/swapfile none swap sw 0 0&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tee&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt; /etc/fstab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检测是否开启&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;swapon&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;--show&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME      TYPE SIZE USED PRIO
/swapfile &lt;span class=&quot;token function&quot;&gt;file&lt;/span&gt;   2G   0B   &lt;span class=&quot;token parameter variable&quot;&gt;-2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>电脑日常</category><category>VPN</category><category>VPS</category></item><item><title>AstroBot部署QQ机器人</title><link>https://huyangpahuo.vercel.app/posts/astrobot-bu-shu-qq-ji-qi-ren/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/astrobot-bu-shu-qq-ji-qi-ren/</guid><description>本篇使用Docker部署AstroBot并制作机器人</description><pubDate>Wed, 22 Apr 2026 14:16:54 GMT</pubDate><content:encoded>&lt;h1 id=&quot;astrobot部署&quot;&gt;AstroBot部署&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#astrobot部署&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;安装&quot;&gt;安装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先检测Docker的版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后下载一个 portainer面板&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker volume create portainer_data
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker run &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;d &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;name portainer &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;restart=always &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;p 9000:9000 &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;run/docker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sock:&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;run/docker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sock &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v portainer_data:&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;data&lt;/span&gt; portainer/portainer-ce:latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;确认安装好了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker &lt;span class=&quot;token function&quot;&gt;ps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们在浏览器中访问这个地址,IP为刚才创建的服务器的IP&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://&amp;#x3C;你的服务器IP&gt;:9000    
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421155137009.webp&quot; alt=&quot;image-20260421155137009&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后自己设置用户名和密码我们就会跳转到这个界面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421155647718.webp&quot; alt=&quot;image-20260421155647718&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果你的界面出现这个&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;New Portainer installation Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer. For further information, view our documentation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;需要重启一下portainer面板&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker restart portainer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们点击这个Get Started Docker的鲸鱼图案进入这个面板&lt;/p&gt;
&lt;p&gt;​		&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421162244971.webp&quot; alt=&quot;image-20260421162244971&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;依此点击&lt;code&gt;local &lt;/code&gt;-&gt;&lt;code&gt;Stacks&lt;/code&gt;-&gt;&lt;code&gt;Add stack&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421162615792.webp&quot; alt=&quot;image-20260421162615792&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;yaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;3.8&apos;&lt;/span&gt;

&lt;span class=&quot;token key atrule&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;astrbot&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; soulter/astrbot&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;latest
    &lt;span class=&quot;token key atrule&quot;&gt;container_name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; astrbot
    &lt;span class=&quot;token key atrule&quot;&gt;restart&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; always
    &lt;span class=&quot;token key atrule&quot;&gt;security_opt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; no&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;new&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;privileges&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token boolean important&quot;&gt;true&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;ports&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6185:6185&quot;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;# AstrBot 管理面板 (WebUI) 端口&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6199:6199&quot;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;# （可选）OneBot v11 反向 WebSocket 端口&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;environment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; TZ=Asia/Shanghai
    &lt;span class=&quot;token key atrule&quot;&gt;volumes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; ./data&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;/AstrBot/data
      &lt;span class=&quot;token comment&quot;&gt;# 如果你的宿主机是 Ubuntu，挂载以下本地时间可以保证容器内时间与宿主机一致&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; /etc/localtime&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;/etc/localtime&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;ro
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;等一会之后,看到这个&lt;code&gt;running&lt;/code&gt;之后&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421163319557.webp&quot; alt=&quot;image-20260421163319557&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在浏览器输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://&amp;#x3C;你的 Ubuntu 服务器 IP&gt;:6185  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后就来到了我们熟悉的界面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421163452083.webp&quot; alt=&quot;image-20260421163452083&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421163822169.webp&quot; alt=&quot;image-20260421163822169&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;配置机器人&quot;&gt;配置机器人&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置机器人&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421164425132.webp&quot; alt=&quot;image-20260421164425132&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;把我之前用AI制作的插件放进去,这个可以去查Astrbot的官方文档制作,或者你也可以安装插件市场别人的&lt;/p&gt;
&lt;p&gt;比如角色扮演和信息查询和生图&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421164623534.webp&quot; alt=&quot;image-20260421164623534&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;机器人的话需要去QQ的开放平台申请获得appid和secret&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421165107838.webp&quot; alt=&quot;image-20260421165107838&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421171516937.webp&quot; alt=&quot;image-20260421171516937&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/AstroBot%E9%83%A8%E7%BD%B2QQ%E6%9C%BA%E5%99%A8%E4%BA%BA/image-20260421165040370.webp&quot; alt=&quot;image-20260421165040370&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;之后我们只需要输入这两个网址就行了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;http://&amp;#x3C;你的服务器IP&gt;:9000    //打开可视化界面

http://&amp;#x3C;你的服务器IP&gt;:6185    //打开Astrbot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后把机器人邀请进群即可&lt;/p&gt;</content:encoded><category>电脑日常</category><category>AstroBot</category></item><item><title>DigitalOcean的droplet服务器使用</title><link>https://huyangpahuo.vercel.app/posts/digitalocean-de-droplet-fu-wu-qi-shi-yong/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/digitalocean-de-droplet-fu-wu-qi-shi-yong/</guid><description>本篇说明digitalocean的droplet服务器创建过程</description><pubDate>Tue, 21 Apr 2026 14:16:54 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇说明digitalocean的droplet服务器创建过程&quot;&gt;本篇说明digitalocean的droplet服务器创建过程&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇说明digitalocean的droplet服务器创建过程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;购买vps服务器&quot;&gt;购买VPS服务器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#购买vps服务器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;前提说明:  这个会送200美元的学生代金券,可惜在7月份的时候DigitalOcean退出了学生计划,可恶啊!!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/DigitalOcean%E7%9A%84droplet%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8/image-20260421142027033.webp&quot; alt=&quot;image-20260421142027033&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后新建droplets(服务器)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/DigitalOcean%E7%9A%84droplet%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8/image-20260421142150186.webp&quot; alt=&quot;image-20260421142150186&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;Droplets&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;地区选择美国纽约或者新加坡(推荐),不过个人版一个地区只能创建一台&lt;/p&gt;
&lt;p&gt;系统ubuntu 24 LTS&lt;/p&gt;
&lt;p&gt;Droplet Plan 选择rugular计划里的4美元一个月的&lt;/p&gt;
&lt;p&gt;自己设置一个密码用于连接&lt;/p&gt;
&lt;p&gt;ipv6 和监控 这俩也可以选择&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/DigitalOcean%E7%9A%84droplet%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8/image-20260421143510419.webp&quot; alt=&quot;image-20260421143510419&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;创建成功!&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/DigitalOcean%E7%9A%84droplet%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8/image-20260421143703447.webp&quot; alt=&quot;image-20260421143703447&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后通过ssh或者密码在termius连接服务器&lt;/p&gt;
&lt;p&gt;当然你也可以选择这个带Docker的8美元的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/DigitalOcean%E7%9A%84droplet%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BD%BF%E7%94%A8/image-20260423170955658.webp&quot; alt=&quot;image-20260423170955658&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个服务器最大的优点就是几乎不卡顿,而且安全防护高,非常适合作为VPN服务器&lt;/p&gt;
&lt;h2 id=&quot;测试服务器质量&quot;&gt;测试服务器质量&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#测试服务器质量&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;可以去&lt;a href=&quot;https://ping.pe/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;ping.pe&lt;/font&gt;&lt;/a&gt;和&lt;a href=&quot;https://www.tcptest.cn/ping/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;tcptest&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;注意事项&quot;&gt;注意事项&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#注意事项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个并不是一次性付费了,而且必须绑定支付方式才能购买服务器&lt;/p&gt;
&lt;p&gt;其次就是这个月收费+按量收费,只有服务器开着就收钱,并不是一次性年购或月购&lt;/p&gt;</content:encoded><category>生活日常</category><category>DigitalOcean</category><category>VPS</category></item><item><title>Github的学生高校认证</title><link>https://huyangpahuo.vercel.app/posts/github-de-xue-sheng-gao-xiao-ren-zheng/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/github-de-xue-sheng-gao-xiao-ren-zheng/</guid><description>github的学生认证可以干很多事</description><pubDate>Tue, 21 Apr 2026 13:44:18 GMT</pubDate><content:encoded>&lt;h1 id=&quot;大多数外国平台都认github的学生认证&quot;&gt;大多数外国平台都认github的学生认证&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#大多数外国平台都认github的学生认证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;可前往&lt;a href=&quot;https://education.github.com/pack&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;自行了解&lt;/a&gt;,其中包括如下平台:&lt;/p&gt;
&lt;p&gt;Termius&lt;/p&gt;
&lt;p&gt;Github Copilot Pro&lt;/p&gt;
&lt;p&gt;namecheap&lt;/p&gt;
&lt;p&gt;Name.com&lt;/p&gt;
&lt;p&gt;Azure&lt;/p&gt;
&lt;p&gt;Jetbrains&lt;/p&gt;
&lt;p&gt;Zed&lt;/p&gt;
&lt;p&gt;lambdatest&lt;/p&gt;
&lt;p&gt;Imgbot&lt;/p&gt;
&lt;p&gt;MongoDB&lt;/p&gt;
&lt;p&gt;还有更多没听说过的平台&lt;/p&gt;</content:encoded><category>生活日常</category><category>GitHub</category></item><item><title>阿里云天工开物</title><link>https://huyangpahuo.vercel.app/posts/a-li-yun-tian-gong-kai-wu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/a-li-yun-tian-gong-kai-wu/</guid><description>关于学生白嫖天工开物300元的劵和便宜服务器</description><pubDate>Mon, 20 Apr 2026 21:10:34 GMT</pubDate><content:encoded>&lt;h1 id=&quot;学生可以在天工开物领300块的劵&quot;&gt;学生可以在天工开物领300块的劵&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#学生可以在天工开物领300块的劵&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;点击前往&lt;a href=&quot;https://university.aliyun.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;阿里百炼&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后领劵,领完在这里看&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E9%98%BF%E9%87%8C%E4%BA%91%E5%A4%A9%E5%B7%A5%E5%BC%80%E7%89%A9/image-20261008211909150.webp&quot; alt=&quot;image-20261008211909150&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;使用支付宝的学生认证后,我们可以去&lt;a href=&quot;https://bailian.console.aliyun.com/cn-beijing/model/market&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;模型广场&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后挑一些好用的模型(其实也就glm和deepseek我看得上)&lt;/p&gt;
&lt;p&gt;然后自己创建一个&lt;a href=&quot;https://bailian.console.aliyun.com/cn-beijing/model/settings/api-key&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;api&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;调用可以用旧版DashScope 共享域名&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://dashscope.aliyuncs.com/compatible-mode/v1

或者

https://dashscope-intl.aliyuncs.com/compatible-mode/v1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者新版的Workspace ID（业务空间 ID）业务空间专属域名&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;https://{WorkspaceId}.{region}.maas.aliyuncs.com/compatible-mode/v1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们无论是用ai还是开服务器都会从这个劵中扣&lt;/p&gt;
&lt;p&gt;​&lt;/p&gt;</content:encoded><category>生活日常</category><category>Diary</category></item><item><title>flutter---基础组件和自定义组件</title><link>https://huyangpahuo.vercel.app/posts/flutter-ji-chu-zu-jian-he-zi-ding-yi-zu-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-ji-chu-zu-jian-he-zi-ding-yi-zu-jian/</guid><description>本篇讲flutter的基础组件和自定义组件</description><pubDate>Mon, 20 Apr 2026 12:55:04 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来学习flutter的几个基本组件&quot;&gt;今天来学习flutter的几个基本组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来学习flutter的几个基本组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;基础组件&quot;&gt;基础组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#基础组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;scaffold组件&quot;&gt;Scaffold组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#scaffold组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//导入Material包&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      theme&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ThemeData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;scaffoldBackgroundColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上一篇我们学到的这个里有个Scaffold组件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260420132350772.webp&quot; alt=&quot;image-20260420132350772&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//头部&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	   &lt;span class=&quot;token comment&quot;&gt;//中部&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;//底部&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260420135410738.webp&quot; alt=&quot;image-20260420135410738&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MaterialApp&lt;/code&gt;包裹整个应用形成统一的&lt;code&gt;Material Design&lt;/code&gt;风格&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Scoffold&lt;/code&gt;组件可快速搭建页面骨架，如&lt;code&gt;appBar&lt;/code&gt;、&lt;code&gt;body&lt;/code&gt;、&lt;code&gt;bottomNavigationBar&lt;/code&gt;等&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Container&lt;/code&gt;用来作为容器，设置高度(height)，child用来存放子组件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Text&lt;/code&gt;是用来显示文本的组件&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;自定义组件customwidget&quot;&gt;自定义组件(Customwidget)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#自定义组件customwidget&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260420142055618.webp&quot; alt=&quot;image-20260420142055618&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;其实&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;StatelessWidget&lt;/strong&gt; = 静态组件（数据显示后自己不会变）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;StatefulWidget&lt;/strong&gt; = 动态组件（数据变了，界面会跟着变）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;无状态组件statelesswidget&quot;&gt;无状态组件(StatelessWidget)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#无状态组件statelesswidget&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;创建一个新的类,继承StatelessWidget类并实现build方法&lt;/p&gt;
&lt;p&gt;build返回一个Widget&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//无状态组件&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260420145629323.webp&quot; alt=&quot;image-20260420145629323&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Chatpage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement build&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们把这个拆开来看&lt;/p&gt;
&lt;p&gt;&lt;code&gt;class Chatpage extends StatelessWidget&lt;/code&gt;继承 StatelessWidget,即定义了一个组件 &lt;code&gt;Chatpage&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Widget build(BuildContext context)&lt;/code&gt;必须重写 build(),这个的作用是返回要显示的UI,Flutter 会在&lt;code&gt; runApp();&lt;/code&gt;调用这个函数画界面&lt;/p&gt;
&lt;p&gt;而&lt;code&gt;return .....;&lt;/code&gt;返回值是Widget类型,因为在flutter里面所有的组件都是widget类型&lt;/p&gt;
&lt;p&gt;这里我们注意&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“程序入口” = 应用从哪里开始跑&lt;/strong&gt;  在flutter中就是runApp(这里必须是“根组件”)&lt;br&gt;
&lt;strong&gt;“组件” = 页面里的一块积木&lt;/strong&gt;,&lt;strong&gt;根组件&lt;/strong&gt;就是&lt;strong&gt;MaterialApp&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而所有组件必须在根组件里使用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;main() → 启动&lt;br&gt;
MyApp → 应用壳子&lt;br&gt;
MaterialApp → App框架&lt;br&gt;
Scaffold → 页面结构&lt;br&gt;
Text / Button → UI组件&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 无状态主页面&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyText&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          alignment&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Alignment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;center&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;底部栏&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//返回值是整个MaterialApp框架内所有东西&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 自定义无状态组件&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyText&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyText&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; style&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextStyle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fontSize&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;24&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//返回值是Text组件&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260420150951795.webp&quot; alt=&quot;image-20260420150951795&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;有状态组件statefulwidget&quot;&gt;有状态组件(StatefulWidget)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#有状态组件statefulwidget&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;有状态组件是构建动态交互界面的核心,能够管理变化的内部状态,当状态改变时,逐渐会更新显示内容&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// TODO: implement createState&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;UnimplementedError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;class MainPage extends StatefulWidget &lt;/code&gt;继承 StatelfulWidget,即定义了一个组件 &lt;code&gt;Chatpage&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Widget build(BuildContext context)&lt;/code&gt;必须重写 build(),这个的作用是返回要显示的UI,Flutter 会在&lt;code&gt; runApp();&lt;/code&gt;调用这个函数画界面&lt;/p&gt;
&lt;p&gt;而&lt;code&gt;return .....;&lt;/code&gt;返回值是Widget类型,因为在flutter里面所有的组件都是widget类型&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425122640439.webp&quot; alt=&quot;image-20260425122640439&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;快速创建无状态组件和有状态组件的方法&quot;&gt;快速创建无状态组件和有状态组件的方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#快速创建无状态组件和有状态组件的方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;首先下载这仨插件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425123143670.webp&quot; alt=&quot;image-20260425123143670&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们在VScode中使用&lt;code&gt;statelessW&lt;/code&gt; 和&lt;code&gt;statefulW&lt;/code&gt;按回车就可以快速创建&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425123543708.webp&quot; alt=&quot;image-20260425123543708&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这里补充一个知识,在VScode中批量变量名或者方法名的方式有以下几种&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;场景&lt;/th&gt;&lt;th&gt;推荐方法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;少量变量&lt;/td&gt;&lt;td&gt;Ctrl + D&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;当前文件全部&lt;/td&gt;&lt;td&gt;Ctrl + Shift + L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;整个项目&lt;/td&gt;&lt;td&gt;Ctrl + Shift + H&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;最安全（推荐）&lt;/td&gt;&lt;td&gt;⭐ F2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;TestWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TestWidget&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TestWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;TestWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_TestWidgetState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _TestWidgetState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;TestWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;组件生命周期-无状态组件&quot;&gt;组件生命周期-无状态组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#组件生命周期-无状态组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;无状态组件的生命周期只有一个阶段------&lt;code&gt;build方法&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个阶段的过程是:&lt;/p&gt;
&lt;p&gt;① 创建（构造函数）&lt;/p&gt;
&lt;p&gt;Flutter 创建这个组件实例&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;MyWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;② build（构建 UI）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;唯一核心生命周期方法&lt;/p&gt;
&lt;p&gt;当组件被创建或者父组件状态变化导致其需要重新构建时,build方法会被调用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatelessWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;组件生命周期-有状态组件&quot;&gt;组件生命周期-有状态组件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#组件生命周期-有状态组件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425132140323.webp&quot; alt=&quot;image-20260425132140323&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425132230255.webp&quot; alt=&quot;image-20260425132230255&quot; style=&quot;zoom: 67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;有状态组件 = 可以随时间改变 UI 的组件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MyWidget&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;生命周期过程如下:&lt;code&gt;创建 &lt;/code&gt;→ &lt;code&gt;initState &lt;/code&gt;→&lt;code&gt; build&lt;/code&gt; →&lt;code&gt;（多次 setState → build）&lt;/code&gt;→ &lt;code&gt;dispose&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//创建阶段 createState方法会被调用一次，创建一个状态对象&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//初始化阶段 initState方法会被调用一次，进行一些初始化操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//依赖变化阶段 didChangeDependencies方法会被调用一次，进行一些依赖变化的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//构建阶段 build方法会被调用多次，进行构建UI的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//更新阶段 didUpdateWidget方法会被调用多次，进行一些更新操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//停用阶段 deactivate方法会被调用一次，进行一些停用操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//销毁阶段 dispose方法会被调用一次，进行一些销毁操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;无状态组件-build&lt;/li&gt;
&lt;li&gt;有状态组件(创建阶段)：createState-&gt;initState-&gt;didchangeDependencies-&gt;build&lt;/li&gt;
&lt;li&gt;有状态组件(更新阶段)：didUpdateWidget-&gt;build&lt;/li&gt;
&lt;li&gt;有状态组件(销毁阶段)：deactivate-&gt;dispose&lt;/li&gt;
&lt;li&gt;执行一次函数：createState、initState、dispose&lt;/li&gt;
&lt;li&gt;Inheritedwidget：专门用于在Widget树中自顶向下高效地共享数据，顶层组件提供数据，子孙节点直接获取&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;事件-点击事件gesturedetector&quot;&gt;事件-点击事件GestureDetector&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#事件-点击事件gesturedetector&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;事件&lt;/strong&gt;：用户与应用程序交互时触发的各种动作，比如触摸屏幕、滑动、点击等&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;点击事件&lt;/strong&gt;：当点击某个元素触发的动作&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;常规方案&lt;/strong&gt;：GestureDetector是Flutter中最常用、功能最丰富的手势检测组件&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;用法&lt;/strong&gt;：使用GestureDetector包裹被点击的元素，传入onTap方法&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425140015128.webp&quot; alt=&quot;image-20260425140015128&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//创建阶段 createState方法会被调用一次，创建一个状态对象&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//初始化阶段 initState方法会被调用一次，进行一些初始化操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//依赖变化阶段 didChangeDependencies方法会被调用一次，进行一些依赖变化的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//构建阶段 build方法会被调用多次，进行构建UI的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//鼠标点击事件GestureDetector&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;GestureDetector&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//onTap就是单击事件，onDoubleTap就是双击事件&lt;/span&gt;
              onTap&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token comment&quot;&gt;// 处理点击事件&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;群聊按钮被单击&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              onDoubleTap&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;群聊按钮被双击&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点击加入群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//更新阶段 didUpdateWidget方法会被调用多次，进行一些更新操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//停用阶段 deactivate方法会被调用一次，进行一些停用操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//销毁阶段 dispose方法会被调用一次，进行一些销毁操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;事件-组件点击事件&quot;&gt;事件-组件点击事件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#事件-组件点击事件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425140944928.webp&quot; alt=&quot;image-20260425140944928&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425141623743.webp&quot; alt=&quot;image-20260425141623743&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//创建阶段 createState方法会被调用一次，创建一个状态对象&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//初始化阶段 initState方法会被调用一次，进行一些初始化操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;initState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//依赖变化阶段 didChangeDependencies方法会被调用一次，进行一些依赖变化的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didChangeDependencies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//构建阶段 build方法会被调用多次，进行构建UI的操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//TextButton 文本按钮组件&lt;/span&gt;
            child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
              onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//更新状态，触发重新构建UI&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;按钮被点击了&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;按钮&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//更新阶段 didUpdateWidget方法会被调用多次，进行一些更新操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;covariant&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;didUpdateWidget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;oldWidget&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//停用阶段 deactivate方法会被调用一次，进行一些停用操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;deactivate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//销毁阶段 dispose方法会被调用一次，进行一些销毁操作&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;dispose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;状态更新-setstate&quot;&gt;状态更新-setState&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#状态更新-setstate&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;语法：数据的变化要更新UI视图，需要执行setState方法，setState方法会造成build的重新执行。&lt;/p&gt;
&lt;p&gt;告诉 Flutter：数据变了，请重新调用 build() 刷新界面&lt;/p&gt;
&lt;p&gt;例如我们写一个计数器&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 计数器&lt;/span&gt;
  int count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          &lt;span class=&quot;token comment&quot;&gt;//Row就是让这三个组件(即&quot;减&quot;+&quot;数字&quot;+&quot;加&quot;排成一条线)&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  count &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;减&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//将count转换为字符串&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token comment&quot;&gt;//&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  count &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;加&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时我们发现点击加减号时中间的数字不会改变,这是因为我们没有添加setState状态监测&lt;/p&gt;
&lt;p&gt;此时我们加上serState,然后点击加或者减就会看到中间的数字发生改变&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;StatefulWidget&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;createState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;_MainPageState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; _MainPageState &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;State&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MainPage&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 计数器&lt;/span&gt;
  int count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Widget&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;BuildContext&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
        appBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;AppBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;centerTitle&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        body&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Row&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; 
            children&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//此时增加状态检测&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    count &lt;span class=&quot;token operator&quot;&gt;-=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//也可以这么写,因为这个是异步操作,setState为让程序重新执行build方法&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//count -= 1;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//print(count);&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//setState(() {});&lt;/span&gt;
                  
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;减&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token class-name&quot;&gt;TextButton&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
                onPressed&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//此时增加状态监测&lt;/span&gt;
                  &lt;span class=&quot;token function&quot;&gt;setState&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    count &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//也可以这么写&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//count -= 1;&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//print(count);&lt;/span&gt;
                  &lt;span class=&quot;token comment&quot;&gt;//setState(() {});&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
                child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;加&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
              &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        bottomNavigationBar&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
          height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
          child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Center&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;child&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E5%9F%BA%E7%A1%80%E7%BB%84%E4%BB%B6%E5%92%8C%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6/image-20260425144108495.webp&quot; alt=&quot;image-20260425144108495&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>Gemini在sandbox中的运行方法</title><link>https://huyangpahuo.vercel.app/posts/gemini-zai-sandbox-zhong-de-yun-xing-fang-fa/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/gemini-zai-sandbox-zhong-de-yun-xing-fang-fa/</guid><description>本篇说明gemini如何配置sandbox沙箱隔离</description><pubDate>Mon, 20 Apr 2026 10:07:55 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇解决gemini的登录地区限制问题和如何在docker中配置sandbox&quot;&gt;本篇解决Gemini的登录地区限制问题和如何在Docker中配置sandbox&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇解决gemini的登录地区限制问题和如何在docker中配置sandbox&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Gemini的CLI并不像codex那样自动分配沙箱隔离&lt;/p&gt;
&lt;p&gt;所以需要我们自己配置&lt;/p&gt;
&lt;h2 id=&quot;使用gemini-api登录&quot;&gt;使用Gemini API登录&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用gemini-api登录&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm i &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g @google/gemini-&lt;span class=&quot;token function&quot;&gt;cli&lt;/span&gt;@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;初次下载Gemini的需要登录,当然你也可以用CC switch反代其他的api&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20260420101137242.webp&quot; alt=&quot;image-20260420101137242&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008101031398.webp&quot; alt=&quot;image-20261008101031398&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过也可以用api&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://aistudio.google.com/api-keys&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;前往谷歌ai studio官网&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20260420101504377.webp&quot; alt=&quot;image-20260420101504377&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;创建api并接入cli&quot;&gt;创建api并接入cli&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建api并接入cli&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20260420101654934.webp&quot; alt=&quot;image-20260420101654934&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时会显示&lt;code&gt;no sandbox&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;由于Google Gemini采用 cli 和sandbox分离策略,所以我们需要自己在docker中配置&lt;/p&gt;
&lt;h2 id=&quot;docker中配置sandbox&quot;&gt;Docker中配置sandbox&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#docker中配置sandbox&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.docker.com/products/docker-desktop/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;下载Docker&lt;/font&gt;&lt;/a&gt;以及&lt;a href=&quot;https://github.com/asxez/DockerDesktop-CN&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;下载docker汉化补丁(可选)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;安装完毕后启动docker&lt;/p&gt;
&lt;p&gt;先打开Gemini的CLI&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;gemini
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;先使用这个命令更新&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;npm install &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;g @google/gemini-&lt;span class=&quot;token function&quot;&gt;cli&lt;/span&gt;@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;看看你的Gemini的CLI的版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;gemini &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version    &lt;span class=&quot;token comment&quot;&gt;#例如我的是0.62.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后再把你的API告诉终端(临时操作,终端关掉仍然需要重新认证)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:GEMINI_API_KEY=&lt;span class=&quot;token string&quot;&gt;&quot;你的key&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当然也可以写入用户变量或系统变量持久化&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;[Environment]&lt;/span&gt;::SetEnvironmentVariable&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;GEMINI_API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;你的key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;User&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token namespace&quot;&gt;[Environment]&lt;/span&gt;::SetEnvironmentVariable&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;GEMINI_API_KEY&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;你的key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Machine&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20260420105310444.webp&quot; alt=&quot;image-20260420105310444&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;配置wsl到其他盘,因为后续在docker中安装的东西会默认安装在wsl会占用很多磁盘空间&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008102422244.webp&quot; alt=&quot;image-20261008102422244&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在docker中安装镜像,sandbox的版本就是你的gemini的版本,自行替换,更新的话就是重新执行这个命令(注意版本号与gemini一致)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker pull us-docker&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;pkg&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;dev/gemini-code-dev/gemini-&lt;span class=&quot;token function&quot;&gt;cli&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;sandbox:0&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;62&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;0   &lt;span class=&quot;token comment&quot;&gt;#sandbox的版本就是你的gemini的版本,自行替换&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008102834210.webp&quot; alt=&quot;image-20261008102834210&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在sandbox沙盒中启用gemini(注意,此时要打开docker,否则会报错系统找不到sandbox)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;gemini &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;sandbox
&lt;span class=&quot;token comment&quot;&gt;#或者&lt;/span&gt;
gemini &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;s
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	此时就可以正常使用了&lt;/p&gt;
&lt;h2 id=&quot;可能出现的问题对于gemini-0630&quot;&gt;可能出现的问题(对于gemini 0.63.0)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#可能出现的问题对于gemini-0630&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008182538375.webp&quot; alt=&quot;image-20261008182538375&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图,我们使用&lt;code&gt;gemini -s&lt;/code&gt;选择信任工作区文件夹或者其父文件夹的时候会发现始终无法信任,会显示&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;不过我们如果不使用sandbox的话,直接用&lt;code&gt;gemini&lt;/code&gt;命令打开Gemini,此时工作区目录信任是正常的&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;此时我们只能选择&lt;code&gt;不信任(Don&apos;t trust)&lt;/code&gt;,结果就是工作目录里的这些文件夹里的东西不会被加载&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;.gemini
GEMINI.md
MCP
Hooks
Commands
Skills
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不过我们的沙盒依旧正常运行,我们可以在Gemini终端启动时新开一个终端使用 &lt;code&gt;docker ps&lt;/code&gt; 检查Docker容器的正在运行的容器&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;docker &lt;span class=&quot;token function&quot;&gt;ps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到当前我们的sandbox运行的很正常&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008183941739.webp&quot; alt=&quot;image-20261008183941739&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;信不过的话可以直接让Gemini检测自己现在在什么环境下运行,只要sandbox是和我们docker上的对得上就没问题,而且docker的wsl2本质是linux,我们当前的容器相当于是在linux中运行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;run shell command: &lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;SANDBOX=&lt;span class=&quot;token variable&quot;&gt;$SANDBOX&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;HOSTNAME=&lt;span class=&quot;token environment constant&quot;&gt;$HOSTNAME&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;uname&lt;/span&gt; -a&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token builtin class-name&quot;&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008184645308.webp&quot; alt=&quot;image-20261008184645308&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;解决方法&quot;&gt;解决方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#解决方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们可以让Gemini跳过这个信任&lt;/p&gt;
&lt;p&gt;&lt;code&gt;--skip-trust&lt;/code&gt; 参数用于&lt;strong&gt;本次 session 直接信任当前 workspace, 跳过 Folder Trust 检查&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这样就不会看到这个烦人的弹窗了,然后我们试试,只要sandbox显示的是&lt;code&gt;current process&lt;/code&gt;就没问题&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;gemini &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;s &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;skip-trust&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008190127783.webp&quot; alt=&quot;image-20261008190127783&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;或者我们修改powershell的Profile配置文件配置一个自动转换,这样下一次我们只需要用&lt;code&gt;gemini -s&lt;/code&gt;或者&lt;code&gt;gemini --sandbox&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Add-Content&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; @&lt;span class=&quot;token string&quot;&gt;&apos;

# Gemini CLI: 使用 -s/--sandbox 时自动追加 --skip-trust
function gemini {
    $c = (Get-Command gemini.cmd -CommandType Application).Source
    if (($args -contains &quot;-s&quot; -or $args -contains &quot;--sandbox&quot;) -and -not ($args -contains &quot;--skip-trust&quot;)) {
        &amp;#x26; $c @args --skip-trust
    } else {
        &amp;#x26; $c @args
    }
}
&apos;&lt;/span&gt;@
&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者我们也可以打开&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;自己在文件下方添加然后保存关闭文件&lt;/p&gt;
&lt;p&gt;先找到这个文件在哪&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Gemini CLI: 使用 -s/--sandbox 时自动跳过文件夹信任确认&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; gemini &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$geminiCmd&lt;/span&gt; = &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Get-Command&lt;/span&gt; gemini&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;cmd &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;CommandType Application &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ErrorAction Stop&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Source

    &lt;span class=&quot;token variable&quot;&gt;$useSandbox&lt;/span&gt; = &lt;span class=&quot;token variable&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-contains&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;-s&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-or&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-contains&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--sandbox&quot;&lt;/span&gt;
    &lt;span class=&quot;token variable&quot;&gt;$hasSkipTrust&lt;/span&gt; = &lt;span class=&quot;token variable&quot;&gt;$args&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-contains&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;--skip-trust&quot;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;$useSandbox&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-and&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-not&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$hasSkipTrust&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &amp;#x26; &lt;span class=&quot;token variable&quot;&gt;$geminiCmd&lt;/span&gt; @args &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;skip-trust&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &amp;#x26; &lt;span class=&quot;token variable&quot;&gt;$geminiCmd&lt;/span&gt; @args
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Gemini%E5%9C%A8sandbox%E4%B8%AD%E7%9A%84%E8%BF%90%E8%A1%8C%E6%96%B9%E6%B3%95/image-20261008193401672.webp&quot; alt=&quot;image-20261008193401672&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Gemini</category><category>Docker</category></item><item><title>flutter---环境配置</title><link>https://huyangpahuo.vercel.app/posts/flutter-huan-jing-pei-zhi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/flutter-huan-jing-pei-zhi/</guid><description>本篇来讲讲flutter相关的配置</description><pubDate>Sat, 18 Apr 2026 21:32:39 GMT</pubDate><content:encoded>&lt;h1 id=&quot;完成dart的学习后我们开始学习flutter&quot;&gt;完成dart的学习后我们开始学习flutter&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#完成dart的学习后我们开始学习flutter&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;flutter其实和前端非常的像,学过前端的可能对这个理解更清晰&lt;/p&gt;
&lt;h2 id=&quot;检测环境配置&quot;&gt;检测环境配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检测环境配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;不知道你们的flutter下载好了没有?&lt;/p&gt;
&lt;p&gt;最好去vscode里下,因为会省掉很多麻烦的步骤,vscode会自动帮你把flutter sdk添加到path路径&lt;/p&gt;
&lt;p&gt;然后执行如下命令检测&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;flutter &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version
dart &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;version

flutter doctor &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中第三个命令你们一定会报错&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418213910648.webp&quot; alt=&quot;image-20260418213910648&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418213928732.webp&quot; alt=&quot;image-20260418213928732&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;最底下那个是因为网络问题(Google嘛,懂的都懂,国内不挂梯子肯定ping不通)&lt;/p&gt;
&lt;p&gt;问题是Android,你们没有安装Android的SDK并配置到系统Path路径&lt;/p&gt;
&lt;p&gt;这里我推荐你们挂梯子去下载一个Android Studio 然后在里面下载SDK&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418214614509.webp&quot; alt=&quot;image-20260418214614509&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中这几个必须下载,而且要全程外网,否则就会下载失败(实在不行你们去官网直接下载提供的SDK)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418214714010.webp&quot; alt=&quot;image-20260418214714010&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这些分别是构建工具和安卓手机虚拟机&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418214935129.webp&quot; alt=&quot;image-20260418214935129&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到里面有一些软件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418215241768.webp&quot; alt=&quot;image-20260418215241768&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;完成后添加sdk到path路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260418215439783.webp&quot; alt=&quot;image-20260418215439783&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;或者你这样在系统变量(不是Path)里添加&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ANDROID_HOME=D:\AndroidStudio\sdk     //改成你自己的SDK路径
ANDROID_SDK_ROOT=D:\AndroidStudio\sdk    //改成你自己的SDK路径
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于这个网络问题,如果你们没有梯子的话我们可以使用flutter官方镜像源&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;把这两个配置到系统变量和刚才一样,然后再检查一遍就发现网络正常了&lt;/p&gt;
&lt;p&gt;对于安卓还有一句话需要说就是首先在D盘创建这两个文件夹GradleCache和PubCache然后配置下面的环境变量,否则日后你的&lt;br&gt;
C盘会越来越大&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;GRADLE_USER_HOME=D:\GradleCache
PUB_CACHE=D:\PubCache
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后安装Pub依赖&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter pub get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419111349202.webp&quot; alt=&quot;image-20260419111349202&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419111410794.webp&quot; alt=&quot;image-20260419111410794&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;至于这里面的proxy什么的是因为我挂了梯子代理,注意如果你挂了代理也会影响localhost本地服务器,&lt;/p&gt;
&lt;p&gt;一定要在系统变量里设置NO_PROXY 来屏蔽本地服务器否则根本打不开浏览器网页或者浏览器只会显示白屏什么都没有&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;NO_PROXY=localhost,127.0.0.1,::1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;还有就是用完梯子之后要把这个HTTP_PROXY和HTTPS_PROXY从系统变量中删除,否则电脑所有流量都会经过梯子,而下一次如果忘记打开梯子时就会发现电脑连不上网&lt;/p&gt;
&lt;p&gt;现在已经没有问题了!&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419211224309.webp&quot; alt=&quot;image-20260419211224309&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419211244739.webp&quot; alt=&quot;image-20260419211244739&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK,环境配置完了,接下来就是创建工程了&lt;/p&gt;
&lt;h2 id=&quot;创建flutter工程&quot;&gt;创建Flutter工程&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建flutter工程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先新建一个文件夹,在这个文件夹里打开终端&lt;/p&gt;
&lt;p&gt;这里我们有很多命令&lt;/p&gt;
&lt;h3 id=&quot;全平台创建&quot;&gt;全平台创建&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#全平台创建&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create my_app

或者

flutter create --platforms=android,ios,web,windows,macos,linux my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;单平台创建&quot;&gt;单平台创建&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#单平台创建&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们可以先查看我们有什么设备&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter devices
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;android&quot;&gt;Android&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#android&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;ios的我不清楚,不过Android的需要手机打开开发者模式用USB和电脑连接,而且要在电脑上获取手机的一堆调试权限&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --platforms=android my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;web&quot;&gt;Web&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#web&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;web端就是一般Chrome和Edge,flutter会创建一个空白的chrome和edge窗口(没有登录信息和插件,什么都没有),将app的环境和电脑上的浏览器隔离来避免电脑插件的影响&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --platforms=web my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;windows&quot;&gt;Windows&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#windows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --platforms=windows my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;空模板&quot;&gt;空模板&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#空模板&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --empty my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;依此类推macos  ios 和 linux&lt;/p&gt;
&lt;h3 id=&quot;补平台创建&quot;&gt;补平台创建&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#补平台创建&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果你原来只创建了Android但是需要Windows版本的,可以使用这个命令补创建平台 后面的这个小点 “ &lt;font color=&quot;#FF1493&quot;&gt;.&lt;/font&gt; ” 代表代表当前项目目录&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --platforms=windows .
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者你可以在创建之处就构建好两个平台的环境&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter create --platforms=android,windows my_app
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;运行项目&quot;&gt;运行项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#运行项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;默认设备运行&quot;&gt;默认设备运行&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#默认设备运行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个如果你只有Windows,就默认运行Windows,如果连接了手机,就会默认运行Android&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;指定设备运行&quot;&gt;指定设备运行&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#指定设备运行&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;但是最好指定设备运行,不容易混乱&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter run -d windows
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter run -d android
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter run -d chrome
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;创建本地服务器&quot;&gt;创建本地服务器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建本地服务器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;如果你不想使用Chrome和Edge,也可以开一个本地服务器,用其他浏览器访问localhost地址就行了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter run -d web-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;全局设置&quot;&gt;全局设置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#全局设置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们可以用这个列出所有flutter可用的命令&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter config
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419114639156.webp&quot; alt=&quot;image-20260419114639156&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然也可以查看功能的启用与否&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter config --list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419114814334.webp&quot; alt=&quot;image-20260419114814334&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后开启和关闭功能就是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;//enable开启
flutter config --enable-web  
flutter config --enable-windows-desktop

//no-enable关闭
flutter config --no-enable-web
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;也可以配置jdk的路径&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter config --jdk-dir=&quot;D:\Java学习软件\jdk\jdk-23文件&quot;
或者
flutter config --jdk-dir D:\Java学习软件\jdk\jdk-23文件
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;和android 的sdk的路径&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter config --android-sdk=&quot;D:\AndroidStudio\sdk&quot;
或者
flutter config --android-sdk D:\AndroidStudio\sdk
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果要取消配置的话使用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter config --android-sdk &quot;&quot;
flutter config --jdk-dir &quot;&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;构建项目&quot;&gt;构建项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#构建项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个就不用说了,就是打包成app&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter build apk     
flutter build appbundle   //上架Google Play专用
flutter build web
flutter build windows   
flutter build linux

//这俩只能在macos上打包,因为需要苹果的签名
flutter build macos   
flutter build ios    
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如我们构建apk&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260428164557996.webp&quot; alt=&quot;image-20260428164557996&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h3 id=&quot;清除项目&quot;&gt;清除项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#清除项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter clean
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;注意,除此之外尤其是android,每次失败都要把build出来的以及gradle和pub缓存文件夹里的东西删的干干净净再重新开始,否则接下来不可能成功,疯狂报错(别问我怎么知道的........问就是一抚琵琶奏琴弦~)&lt;/p&gt;
&lt;h2 id=&quot;ok我们从web平台开始&quot;&gt;OK,我们从Web平台开始&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ok我们从web平台开始&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419190327090.webp&quot; alt=&quot;image-20260419190327090&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;浏览器的话最好Chrome或者Edge&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419204054334.webp&quot; alt=&quot;image-20260419204054334&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们启用Chrome&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419213114181.webp&quot; alt=&quot;image-20260419213114181&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后它自动跳转到浏览器,第一次的时候刷新一下浏览器,就可以看到这个自带的计数器案例了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419213218834.webp&quot; alt=&quot;image-20260419213218834&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;runapp和widget&quot;&gt;runAPP和Widget&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#runapp和widget&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419214306453.webp&quot; alt=&quot;image-20260419214306453&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;runAPP它的作用只有一个：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;把你的 Flutter UI“挂载到屏幕上”&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;MyApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Flutter 的核心就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;❗ 一切都是 Widget&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面&lt;/li&gt;
&lt;li&gt;按钮&lt;/li&gt;
&lt;li&gt;文本&lt;/li&gt;
&lt;li&gt;布局（Row / Column）&lt;/li&gt;
&lt;li&gt;App 本身&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;概念&lt;/th&gt;&lt;th&gt;runApp&lt;/th&gt;&lt;th&gt;Widget&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;类型&lt;/td&gt;&lt;td&gt;函数&lt;/td&gt;&lt;td&gt;类&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;作用&lt;/td&gt;&lt;td&gt;启动 Flutter 应用&lt;/td&gt;&lt;td&gt;构建 UI&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;调用次数&lt;/td&gt;&lt;td&gt;一般只一次&lt;/td&gt;&lt;td&gt;无限次（重建）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否参与 UI&lt;/td&gt;&lt;td&gt;不直接&lt;/td&gt;&lt;td&gt;全部 UI 都是 Widget&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否会刷新&lt;/td&gt;&lt;td&gt;不会&lt;/td&gt;&lt;td&gt;会（build 重建）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;material库&quot;&gt;Material库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#material库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419221147469.webp&quot; alt=&quot;image-20260419221147469&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;大家有没有用过Google play和Gmail,你可以发现谷歌的所有软件都是统一的UI,而这个UI名称就叫做material design 3,这里我们的flutter内置了这个库&lt;/p&gt;
&lt;h3 id=&quot;materialapp&quot;&gt;MaterialAPP&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#materialapp&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;MaterialApp = “给整个 Flutter App 套上 Android/Material 设计系统 + 路由 + 主题 + 全局配置的总控制器”&lt;/p&gt;
&lt;p&gt;也就是说这个是应用的壳子,方便对整个应用的属性进行整体设计&lt;/p&gt;
&lt;p&gt;常见的属性有&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;title&lt;/code&gt;: 用来展示窗口的标题内容(可以不设置)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;theme&lt;/code&gt;:用来设置整个应用的主题&lt;/p&gt;
&lt;p&gt;&lt;code&gt;home&lt;/code&gt;:用来展示窗口的主题内容&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Flutter/flutter---%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/image-20260419224054062.webp&quot; alt=&quot;image-20260419224054062&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;package:flutter/material.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//导入Material包&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;runApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;MaterialApp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
      title&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地AI群聊&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      theme&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ThemeData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;scaffoldBackgroundColor&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;lightBlueAccent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      home&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Scaffold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>dart---异步编程和Future</title><link>https://huyangpahuo.vercel.app/posts/dart-yi-bu-bian-cheng-he-future/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/dart-yi-bu-bian-cheng-he-future/</guid><description>本篇来了解一下dart中的异步编程和future</description><pubDate>Sat, 18 Apr 2026 10:19:09 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天我们来学dart中的异步编程和future&quot;&gt;今天我们来学Dart中的异步编程和Future&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天我们来学dart中的异步编程和future&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;异步编程&quot;&gt;异步编程&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#异步编程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418103656415.webp&quot; alt=&quot;image-20260418103656415&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们简单描述一下进程和线程&lt;/p&gt;
&lt;p&gt;{% hideToggle 进程和线程 %}&lt;/p&gt;
&lt;p&gt;进程就是正在运行中的程序,因为电脑上的软件是存在在磁盘上的,即以文件的形式存储的,也就是我们熟悉的文件夹,包括手机平板也是同样的,当我们点开一个软件时,首先这个软件会被加载到内存并获得系统资源,然后开始执行&lt;/p&gt;
&lt;p&gt;你使用ctrl + alt +del 打开你的资源管理器就明白了(话说我后台怎么这么多程序,难道是开机自启动? 难怪每次开机这么慢)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418104835840.webp&quot; alt=&quot;image-20260418104835840&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;程序运行会占用内存,每个进程之间内存隔离互不影响,比如你终止了哔哩哔哩的进程,不会影响其他软件的使用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418121642703.webp&quot; alt=&quot;image-20260418121642703&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;至于线程,就是程序内部的执行路线,单个进程里有至少一个线程,以浏览器为例&lt;/p&gt;
&lt;p&gt;Chrome（进程）&lt;/p&gt;
&lt;p&gt;├── 线程1：渲染页面&lt;/p&gt;
&lt;p&gt;├── 线程2：网络下载&lt;/p&gt;
&lt;p&gt;├── 线程3：执行 JavaScript&lt;/p&gt;
&lt;p&gt;└── 线程4：播放音频&lt;/p&gt;
&lt;p&gt;即进程给程序分配资源,线程负责执行程序&lt;/p&gt;
&lt;p&gt;多线程就是多个线程同时进行执行任务,效率更高,但是单线程就是排队执行任务,上一个任务执行完毕才会轮到下一个&lt;/p&gt;
&lt;p&gt;{% endhideToggle %}&lt;/p&gt;
&lt;h2 id=&quot;future&quot;&gt;Future&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#future&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418163623676.webp&quot; alt=&quot;image-20260418163623676&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;正常情况下是这样的,这里用了回调函数&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418164722903.webp&quot; alt=&quot;image-20260418164722903&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;baka&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//throw抛出异常&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//then 中接收成功状态&lt;/span&gt;
  f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//catchError 中接收失败状态&lt;/span&gt;
  f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catchError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;出~错~了 ! zako~ zako~ zako~&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;异常情况下是这样的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418164823601.webp&quot; alt=&quot;image-20260418164823601&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//return &quot;baka&quot;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//throw 抛出异常&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//then 中接收成功状态&lt;/span&gt;
  f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//catchError 中接收失败状态&lt;/span&gt;
  f&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catchError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;出~错~了 ! zako~ zako~ zako~&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;flutter的链式调用&quot;&gt;Flutter的链式调用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#flutter的链式调用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;上一个 then 返回对象，会在下一个 then 中接收&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;baka_00&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//throw Exception;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//then 中接收成功状态&lt;/span&gt;
  f
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;baka_01&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;----baka_02&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;----baka_03&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catchError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;err&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;出~错~了 ! zako~ zako~ zako~&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第1步收到：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 返回一个新值（会传给下一个 then）&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; value &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第2步收到：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 再返回一个值&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; value &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;then&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第3步收到：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;catchError&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;error&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;发生错误：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;error&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;async和await&quot;&gt;async和await&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#async和await&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418181659653.webp&quot; alt=&quot;image-20260418181659653&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;你可以发现在函数的参数括号后面有&lt;code&gt;async &lt;/code&gt;指的是 &lt;code&gt;asynchronous（异步)&lt;/code&gt;,代表当前函数是异步的&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;关键字&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;async&lt;/td&gt;&lt;td&gt;声明函数是异步&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;await&lt;/td&gt;&lt;td&gt;等待异步结果&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fetchData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;delayed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//延迟两秒钟,和unity中的协程非常相似&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;数据加载完成&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;开始请求&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fetchData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;结束&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里你可以注意到一行代码 &lt;code&gt;Future.delayed(Duration(seconds: 2));&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这里其实完整格式是&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;(new) Future&amp;#x3C;String&gt;.delayed(Duration duration, [FutureOr&amp;#x3C;String&gt; Function()? computation])&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;其中第一个参数Duration duration是指延迟时间例如延迟一秒钟Duration(seconds: 1)&lt;/p&gt;
&lt;p&gt;而第二个参数是可选的,即延迟时间之后的返回值,通常为  匿名函数()=&gt;{ return 返回值 },这里的返回值必须和泛型里规定的一致&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;delayed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; user&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;delayed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;user&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 的订单：iPhone&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getDetail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; order&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;delayed&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;seconds&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;（128GB）&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;开始请求&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; user &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getUser&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;用户：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;user&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; order &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getOrder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;订单：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;order&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; detail &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getDetail&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;order&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;详情：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;detail&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;结束&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;try--catch&quot;&gt;try  catch&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#try--catch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和C#里的很像,C#里也有try catch函数,这里 &lt;code&gt;try &lt;/code&gt;指的是 &lt;code&gt;尝试（try block）&lt;/code&gt;  而&lt;code&gt;catch&lt;/code&gt;指的是 &lt;code&gt;捕获（catch exception）&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    int a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 整数除零，会报错&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;出错了：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在异步里就是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Future&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Exception&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;网络挂了&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;捕获到错误：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;e&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其实和if lese的逻辑差不多,只不过这个是应对错误情况使用的&lt;/p&gt;
&lt;h2 id=&quot;on关键字&quot;&gt;on关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#on关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个其实在之前我们学mixin的时候就遇到了,不过on关键字在不同场景下的作用不太一样&lt;/p&gt;
&lt;h3 id=&quot;在try-on中&quot;&gt;在try on中&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#在try-on中&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们刚才说的try catch的catch的参数是error,也就是接受一切错误并反馈&lt;/p&gt;
&lt;p&gt;但是这里try on 就不是了&lt;/p&gt;
&lt;p&gt;在这里   &lt;code&gt;on&lt;/code&gt; = &lt;strong&gt;只捕获某种指定类型的异常&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; 异常类型 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如刚才的这个例子返回值是  &lt;code&gt;IntegerDivisionByZeroException&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418210253654.webp&quot; alt=&quot;image-20260418210253654&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而我们只提取这一个问题并输出就行了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    int a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 整数除零，会报错&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;IntegerDivisionByZeroException&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;不能除0&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B%E5%92%8CFuture/image-20260418210401742.webp&quot; alt=&quot;image-20260418210401742&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;甚至还能这样玩&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//List越界&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;list&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;RangeError&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;越界&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 整数除0&lt;/span&gt;
    int a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~/&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;IntegerDivisionByZeroException&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;除零&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 格式错误&lt;/span&gt;
    int&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;parse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;FormatException&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;格式错误&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;在mixin中&quot;&gt;在mixin中&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#在mixin中&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在mixin中我们知道&lt;code&gt;with&lt;/code&gt;关键字可以让类使用mixin里的参数和方法&lt;/p&gt;
&lt;p&gt;而我们在mixin中使用&lt;code&gt;on&lt;/code&gt;就是限制只有哪些类可以使用这个mixin&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//所有的动物都会吃东西&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;动物吃东西&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//鸟继承动物类&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Bird&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;layEgg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;鸟下蛋&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//猫继承动物类&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Cat&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//狗继承动物类&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//但是飞行和下蛋能力我只允许鸟可以&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fly&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;on&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Bird&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;layEgg&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;鸟在飞&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//这样麻雀类继承鸟类就可以飞了&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sparrow&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Bird&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fly&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Sparrow&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sparrow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>dart---class和mixin和泛型</title><link>https://huyangpahuo.vercel.app/posts/dart-class-he-mixin-he-fan-xing/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/dart-class-he-mixin-he-fan-xing/</guid><description>本篇来学习dart里的类,混合类和泛型</description><pubDate>Thu, 16 Apr 2026 13:08:39 GMT</pubDate><content:encoded>&lt;h1 id=&quot;由于是面向对象语言所以dart同样也有class类&quot;&gt;由于是面向对象语言,所以Dart同样也有class类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#由于是面向对象语言所以dart同样也有class类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;因为我们对类已经相当熟悉了,这里就用代码描述一下吧&lt;/p&gt;
&lt;p&gt;类中包含对象的属性和方法(也就是定义的行为)&lt;/p&gt;
&lt;p&gt;和C#一样,定义了类只有实例化后才能使用类(对了,dart)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//类的实例,也可以写成Player p =new Player();&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//或者var p = new Player();&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//在Dart中，new关键字是可选的，可以省略不写。&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;勇者&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样的,有类必定有构造函数&lt;/p&gt;
&lt;h2 id=&quot;构造函数&quot;&gt;构造函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#构造函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;构造函数就是一个特殊的方法，用于创建对象并初始化对象的属性。它的名称与类名相同，并且没有返回类型。在 Dart 中，构造函数可以有参数，也可以没有参数。&lt;/p&gt;
&lt;p&gt;说人话就是我们在初始化类时,dart会自动加载构造函数中的参数设置&lt;/p&gt;
&lt;p&gt;不过和C#还有Java不同的是这个Dart构造函数的重载&lt;/p&gt;
&lt;h3 id=&quot;默认构造&quot;&gt;默认构造&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#默认构造&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这里我们先说无参的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//无参构造函数&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;善良米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后是有参构造函数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//有参构造函数&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不过以上的写法比较繁琐,因为还得考虑参数为空的情况,下面我们就用简洁的方式,不用?符号&lt;/p&gt;
&lt;p&gt;无参&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 无参构造（推荐写法）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;善良米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;有参&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//语法糖,我们后面会说&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;命名构造dart-特有很常用&quot;&gt;命名构造（Dart 特有，很常用）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#命名构造dart-特有很常用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---class%E5%92%8Cmixin%E5%92%8C%E6%B3%9B%E5%9E%8B/image-20260416143744161.webp&quot; alt=&quot;image-20260416143744161&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//有参构造函数&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然而这种写法仍然繁琐,看的鸡肋&lt;/p&gt;
&lt;p&gt;还有三种直观的写法&lt;/p&gt;
&lt;p&gt;①兼顾Player和Player.NPC&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; npc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;NPC名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, NPC血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 主构造&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 命名构造&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;②语法糖写法,这个下面会讲&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; npc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;NPC名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, NPC血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;③使用命名参数(不初始化值)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; npc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;帽子米塔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家1&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; hp&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;NPC名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, NPC血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;④使用命名参数(初始化值)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; npc &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 玩家血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;NPC名字：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, NPC血量：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;npc&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;玩家1&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;NPC&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;NPC1&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;attack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 发动攻击&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;语法糖&quot;&gt;语法糖&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#语法糖&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---class%E5%92%8Cmixin%E5%92%8C%E6%B3%9B%E5%9E%8B/image-20260416154014857.webp&quot; alt=&quot;image-20260416154014857&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个上面已经演示过了,格式就是这样,用来简化代码&lt;/p&gt;
&lt;h2 id=&quot;公有属性和私有属性&quot;&gt;公有属性和私有属性&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#公有属性和私有属性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;学过C#和java还有JavaScript的都知道public和private这两个东西,通常来说在这些语言中是默认属性和函数私有的,只有显式声明public才会变成公有&lt;/p&gt;
&lt;p&gt;不过,在Dart里,默认的属性是共有的,(这点和lua很像,lua也是只有标注locla关键字才是私有)&lt;/p&gt;
&lt;p&gt;在Dart中私有属性以下划线开头,如&lt;/p&gt;
&lt;p&gt;我们创建三个文件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;flutter学习
├── 1111
│   └── closed.dart
├── start.dart
└── test.dart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;closed.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Enemy&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Enemy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;start.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;test.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;1111/closed.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;勇者&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;男&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Enemy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;哥布林&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;玩家：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;，性别：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;_gender&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;，HP：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;p&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//这里会报错,因为_player.dart中的_gender是私有属性，无法在main.dart中访问&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;敌人：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;，HP：&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;test.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; _gender&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int hp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;_gender&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;hp&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里看到报错了,因为我们把gender设置为私有属性,别的文件无法访问&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---class%E5%92%8Cmixin%E5%92%8C%E6%B3%9B%E5%9E%8B/image-20260416173331577.webp&quot; alt=&quot;image-20260416173331577&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;导入的话就是用&lt;code&gt;import&lt;/code&gt;来导入相对路径的文件,例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;test.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;1111/closed.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;./1111/closed.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里我们还需要了解一个东西就是import的起别名和导入控制&lt;/p&gt;
&lt;h3 id=&quot;起别名&quot;&gt;起别名&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#起别名&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个主要是应对当不同文件存在同名类的情况&lt;/p&gt;
&lt;p&gt;例如我们创建三个文件\&lt;/p&gt;
&lt;p&gt;player.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Player&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;enemy.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Player&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以发现这两个类都叫做player,然而我们导入时编译器分不清&lt;/p&gt;
&lt;p&gt;所以可以分别取别名使用&lt;code&gt;as&lt;/code&gt;关键字,然后我们实例化时也要在类前面加上别名的前缀&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;player.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; player&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;enemy.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; enemy&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  p1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  p2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;导入控制&quot;&gt;导入控制&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#导入控制&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;例如我们将上述的enemy.dart脚本改为&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Enemy Player&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;B&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是我们只想用Player类就必须这么写使用&lt;code&gt;show&lt;/code&gt;关键字就可以导入单独的类&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;player.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; player &lt;span class=&quot;token keyword&quot;&gt;show&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;enemy.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; enemy&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  p1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  p2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是假如我们不想用某个类但是其他的仍需要就可以使用&lt;code&gt;hide&lt;/code&gt;关键字&lt;/p&gt;
&lt;p&gt;这里我们可以修改一下enemy脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Enemy Player&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我要吃提瓦特煎蛋&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;B&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;B&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我要吃蒙德烤鱼&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我要吃渔人吐司&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们修改我们的game脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;player.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; player &lt;span class=&quot;token keyword&quot;&gt;show&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;enemy.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; enemy&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; p2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;Player&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  p1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  p2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;info&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;B&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token namespace&quot;&gt;enemy&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;/span&gt;C&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;c&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时我们将enemy的导入修改为&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;enemy.dart&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;as&lt;/span&gt; enemy &lt;span class=&quot;token keyword&quot;&gt;hide&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;继承&quot;&gt;继承&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#继承&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;继承是面向对象的三大特点:继承,多态,封装之一,就是子类会获得父类的所有属性和方法,封装这个最好理解,比如函数本身就是封装,你在使用函数的时候无需在意函数内部怎么实现的,只需要学会怎么使用这个函数提供的功能即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---class%E5%92%8Cmixin%E5%92%8C%E6%B3%9B%E5%9E%8B/image-20260416191201330.webp&quot; alt=&quot;image-20260416191201330&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;extends关键字&quot;&gt;extends关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#extends关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Dart 是&lt;strong&gt;单继承语言&lt;/strong&gt;，也就是一个类只能继承一个父类&lt;/p&gt;
&lt;p&gt;和C#差不多,不过和Java更像,C#中使用的是“:”来继承父类或者接口&lt;/p&gt;
&lt;p&gt;在Dart中使用的是extends&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;吃东西&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;bark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;汪汪&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  d&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 继承来的&lt;/span&gt;
  d&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;bark&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 自己的&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;super关键字构造函数继承&quot;&gt;super关键字构造函数继承&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#super关键字构造函数继承&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;虽然咱们说了子类可以继承父类的所有属性,但是除了构造函数不能,所以需要一个特殊的关键字&lt;code&gt;super&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这玩意和C#里的base很像,都是可以获得父类属性&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;旺财&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;初次之外,super还能调用父类中的方法,来接受被子类覆盖掉的功能&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;stickOutTongue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 吐舌头&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;stickOutTongue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;stickOutTongue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 调用父类的方法,保留父类的功能&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; 伸出舌头&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;旺财&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;动物&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;d&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;stickOutTongue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;stickOutTongue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;多态&quot;&gt;多态&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#多态&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;多态就是同一操作作用于不同对象可以产生不同的结果&lt;/p&gt;
&lt;h3 id=&quot;override关键字方法重写&quot;&gt;override关键字方法重写&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#override关键字方法重写&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和C#很像,因为C#里也有override关键字可以让子类修改继承自父类的属性,语法是  &lt;code&gt;@override&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;动物发声&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;汪汪&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;abstract关键字抽象类&quot;&gt;abstract关键字抽象类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#abstract关键字抽象类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;注意抽象类不能直接实例化,这个和C#中的&lt;code&gt;abstract&lt;/code&gt;关键字是一样的&lt;/p&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;不能 &lt;code&gt;new Animal()&lt;/code&gt;即new实例化&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;抽象方法（必须子类实现）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;普通方法（子类可以直接用）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;子类必须实现所有抽象方法&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 没有实现&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;汪汪&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Cat&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;喵喵&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; dog &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; cat &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Cat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  cat&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;implements关键字继承接口&quot;&gt;implements关键字继承接口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#implements关键字继承接口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个不会继承父类中的实现(即只是把一个类当“接口”用),只会继承属性和方法,但是不会继承属性值和方法里的内容,需要override重写,对了,使用这个可以实现抽象类&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 没有实现&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;汪汪汪&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Cat&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;喵喵喵&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; dog &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; cat &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Cat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  cat&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对了还有一个叫做mixin混入,不过我们接下来会说,这个东西可以实现多继承&lt;/p&gt;
&lt;h2 id=&quot;mixin类的混入&quot;&gt;mixin类的混入&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mixin类的混入&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;mixin类似godot中的&lt;code&gt;组合&lt;/code&gt;的方式,比如把不同功能独立开来,然后需要的时候启用这个模块就行了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//mixin实现功能的复用,不需要继承关系,将功能进行分离,需要什么功能就混入什么功能&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;吃&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fly&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;飞&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Swim&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;swim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;游&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Run&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;跑&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 继承Animal,同时混入不同的功能&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;汪汪&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Chicken&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Swim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;咯咯&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duck&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Swim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token metadata function&quot;&gt;@override&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;嘎嘎&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; dog &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; chicken &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Chicken&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  chicken&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  chicken&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;swim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  chicken&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; duck &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Duck&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  duck&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sound&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  duck&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  duck&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;swim&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  duck&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  duck&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这东西我个人觉得非常好用,至少比继承好用&lt;/p&gt;
&lt;p&gt;不过还存在一个问题,如果不同的mixin里面存在相同名字的方法,就会发生覆盖的现象,后添加的会覆盖先添加的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---class%E5%92%8Cmixin%E5%92%8C%E6%B3%9B%E5%9E%8B/image-20260416204322018.webp&quot; alt=&quot;image-20260416204322018&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;例如我们如果把A,B都混合进C类,后添加的B的同名方法和属性会覆盖A的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;say&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;B&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;say&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;B&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;B&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;C&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;say&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//B&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;所以我们尽量避免不同的mixin实现相同的功能,最好也一个mixin实现单个功能,这样既可以减少代码量,也可以避免覆盖&lt;/p&gt;
&lt;h2 id=&quot;泛型&quot;&gt;泛型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#泛型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个东西我们在学List时其实已经见过了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; numbers &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; names &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们都知道List和C#中的List几乎一样,只不过C#强制List必须有泛型,而我们的Dart在没有加泛型的时候会默认为List&amp;#x3C; dynamic &gt;类型&lt;/p&gt;
&lt;p&gt;我们在实际使用的时候应该加上泛型进行参数类型限制&lt;/p&gt;
&lt;p&gt;这里我们可以根据我们已经学过的泛型集合和泛型方法还有泛型类来讲&lt;/p&gt;
&lt;h3 id=&quot;泛型集合map和list&quot;&gt;泛型集合(Map和List)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#泛型集合map和list&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;List我们就不说了,就说说Map吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//泛型字典&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; characterMap &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;芙卡洛斯&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;水神&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;那维莱特&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;龙王&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;娜维娅&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;刺玫会长&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  characterMap&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;key&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;泛型方法function&quot;&gt;泛型方法(Function)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#泛型方法function&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;芙宁娜&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;桑多涅&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;哥伦比亚&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;第一个玩家是: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token function&quot;&gt;getFirst&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;printType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//泛型方法&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt; getFirst&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; printType&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; item &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt; echo&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    echo&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    echo&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;泛型类class&quot;&gt;泛型类(Class)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#泛型类class&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果对于背包类的话,就是什么类型都能装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;T&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Box&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当然也可以用于不同类之间&lt;/p&gt;
&lt;p&gt;如创建animal.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;N&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt; age&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;age&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Fly&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fly&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Flying&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Eating&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;mixin&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sleep&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Sleeping&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;创建dog.dart&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;animal.dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; dog &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Buddy&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  dog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Animal&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Eat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Sleep&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Dog&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;N&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;A&lt;/span&gt; age&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; age&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//这里用super使用父类的构造函数来初始化name和age属性&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于这个泛型我个人的理解是,除非你知道为什么用,否则就不要用,因为这个东西主要是为了让代码更健壮的,并不是必要的&lt;/p&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>dart---条件与循环以及函数</title><link>https://huyangpahuo.vercel.app/posts/dart-tiao-jian-yu-xun-huan-yi-ji-han-shu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/dart-tiao-jian-yu-xun-huan-yi-ji-han-shu/</guid><description>我们来学习dart中的条件循环和函数</description><pubDate>Wed, 15 Apr 2026 21:54:04 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来学if和循环还有函数这个和其他语言的差不多&quot;&gt;今天来学if和循环还有函数,这个和其他语言的差不多&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来学if和循环还有函数这个和其他语言的差不多&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;if条件语句&quot;&gt;if条件语句&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#if条件语句&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个老熟人了,这里不过多描述了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;int score &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;优秀&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;及格&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;不及格&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;三元运算符&quot;&gt;三元运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三元运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个和其他语言的一样,本质上是if的简写版本,就是条件为true就是左边的,反之则是右边的&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;语法格式:&lt;/p&gt;
&lt;p&gt;条件(布尔值) ? 表达式1 : 表达式2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  int age &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; age &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成年人&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;未成年人&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;switch-case语句&quot;&gt;switch case语句&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#switch-case语句&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; fruit &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;苹果&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;香蕉&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;未知水果&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个和C#和Java还有C++,C里的很像,但是大同小异,比如有的有break,有的没有,不过我们的dart语言里的default的最后一个没有break&lt;/p&gt;
&lt;p&gt;对了,和java还有C#一样,这个也是分现代写法和旧写法的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; fruit &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;苹果&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;香蕉&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    _ &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;未知水果&quot;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个是新的写法,省略了case的和default关键字&lt;/p&gt;
&lt;h2 id=&quot;循环&quot;&gt;循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;循环就不用多说了,和C#还有java里的没有区别&lt;/p&gt;
&lt;h3 id=&quot;while循环&quot;&gt;while循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#while循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;do-while循环&quot;&gt;do while循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#do-while循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;for-循环&quot;&gt;for 循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#for-循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;for-in循环&quot;&gt;for in循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#for-in循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fruits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; fruit &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; fruits&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruit&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;break和continue关键字&quot;&gt;break和continue关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#break和continue关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;break（直接退出循环）,continue（跳过本次）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fruits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; fruits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fruits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; fruits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;banana&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fruits&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;函数&quot;&gt;函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;函数这个都熟悉,dart的函数和java这些差不多,只是某些地方有区别&lt;/p&gt;
&lt;p&gt;参数通常分为有参和无参,这里我就从有参和无参来分类吧&lt;/p&gt;
&lt;h3 id=&quot;无参&quot;&gt;无参&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#无参&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;普通无参函数&quot;&gt;普通无参函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#普通无参函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;hello&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;返回值无参函数&quot;&gt;返回值无参函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#返回值无参函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;int &lt;span class=&quot;token function&quot;&gt;getNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;箭头写法lambda表达式&quot;&gt;箭头写法(Lambda表达式)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#箭头写法lambda表达式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;但是只允许一条表达式,即只有return这一句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;int &lt;span class=&quot;token function&quot;&gt;getNumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;调用规则&quot;&gt;调用规则&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#调用规则&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;规则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;函数名 + &lt;code&gt;()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;有参&quot;&gt;有参&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#有参&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;普通有参函数&quot;&gt;普通有参函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#普通有参函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个也称为必选位置参数&lt;/p&gt;
&lt;p&gt;特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须传&lt;/li&gt;
&lt;li&gt;按顺序传（位置固定）&lt;/li&gt;
&lt;li&gt;最基础、性能最好（无额外处理）&lt;/li&gt;
&lt;li&gt;返回值类型可省略，Dart会自动推断类型为dynamic&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;int &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//也可以写成箭头函数(Lambda表达式)&lt;/span&gt;
int &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;function-类型参数&quot;&gt;Function 类型参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#function-类型参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;可以把函数作为参数&lt;/p&gt;
&lt;p&gt;语法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt; fn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 更规范写法（推荐）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; fn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 带参数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int &lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; calc&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;calc&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;强类型函数签名 ⭐&lt;/li&gt;
&lt;li&gt;Dart 比 JS 严谨&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;可选参数可以不传&quot;&gt;可选参数（可以不传）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#可选参数可以不传&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;位置可选参数-&quot;&gt;位置可选参数 &lt;code&gt;[]&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#位置可选参数-&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;语法（用 &lt;code&gt;[]&lt;/code&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;规则：可选位置参数必须位于必传参数后面 , 采用中括号包裹&lt;/li&gt;
&lt;li&gt;语法：函数名(String a , [String?b,.....]),传递时按照顺序传递&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;c&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;调用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;          &lt;span class=&quot;token comment&quot;&gt;// b=null, c=null&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;token comment&quot;&gt;// b=2, c=null&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// b=2, c=3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 默认值写法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;int b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以不传&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;必须按顺序传&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;不能跳过中间参数 ❗&lt;/li&gt;
&lt;li&gt;通常需要 &lt;code&gt;?&lt;/code&gt;（可空）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❌ 错误示例&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ❌ 不允许跳过&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以自己练习一下带返回值的写法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;comment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;comment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;喜欢&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

int &lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;comment&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;明日方舟终末地&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E6%9D%A1%E4%BB%B6%E4%B8%8E%E5%BE%AA%E7%8E%AF%E4%BB%A5%E5%8F%8A%E5%87%BD%E6%95%B0/image-20260416113840742.webp&quot; alt=&quot;image-20260416113840742&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h5 id=&quot;命名参数-&quot;&gt;命名参数 &lt;code&gt;{}&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#命名参数-&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;语法（用 &lt;code&gt;{}&lt;/code&gt;）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特点：可选命名参数必须位于必传参数后面，采用大括号包裹&lt;/li&gt;
&lt;li&gt;语法：函数名(String a , {String?b , …}), 传递时按照&lt;code&gt;参数名：值&lt;/code&gt;的方式进行传递，无需关注顺序&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 调用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;token comment&quot;&gt;// 可以只传一个&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 必填命名参数（required）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;required int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;       &lt;span class=&quot;token comment&quot;&gt;// ✅&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;token comment&quot;&gt;// ❌ 报错&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 默认值&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;int a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按名字传，不看顺序&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;可以只传一部分&lt;/li&gt;
&lt;li&gt;可读性极高 ⭐⭐⭐&lt;/li&gt;
&lt;li&gt;Flutter 里用得最多&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;✅ 适用场景&lt;/p&gt;
&lt;p&gt;👉 参数多 / 可选多 / UI配置&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Container&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
  width&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  height&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  color&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Colors&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;red&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;练习一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;playerData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;JohnDoe&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;playerData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;JaneSmith&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; age&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;playerData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Alice&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; level&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;intermediate&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;playerData&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; username&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; age &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;18&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; level &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;beginner&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Username: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;username&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Age: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;age&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Level: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;level&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;-------------------------&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h6 id=&quot;this-参数&quot;&gt;this 参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#this-参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h6&gt;
&lt;p&gt;在类里非常常见👇&lt;/p&gt;
&lt;p&gt;✅ 语法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Person&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int age&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;Person&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; required &lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;age&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 特点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动赋值&lt;/li&gt;
&lt;li&gt;常和命名参数一起用&lt;/li&gt;
&lt;li&gt;Flutter 代码里遍地都是&lt;/li&gt;
&lt;/ul&gt;
&lt;h5 id=&quot;混合参数&quot;&gt;混合参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#混合参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;同样的,以上两种是可以混用的,但是有顺序要求(先位置,后命名)&lt;/p&gt;
&lt;p&gt;正确顺序（必须记住）&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;必选位置参数
→ 可选位置参数 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
→ 命名参数 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;✅ 示例&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;a&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;c&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;❌ 错误写法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ❌ 命名参数不能在前&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;匿名函数&quot;&gt;匿名函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#匿名函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;匿名函数这个在C#和java里也很常见,而且和JavaScript差不多,都可以用Function来定义函数类型&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;没有名字的函数&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这就是一个匿名函数。&lt;/p&gt;
&lt;p&gt;但它本身没用，必须&lt;strong&gt;赋值或传递&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 调用&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在 Dart 里：&lt;strong&gt;函数也是对象，类型是 Function&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但更推荐写成：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Function&lt;/code&gt; 太泛（不安全）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;void Function()&lt;/code&gt; 有明确参数和返回值&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;带参数的匿名函数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者箭头写法：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个东西实际用途比较广&lt;/p&gt;
&lt;h5 id=&quot;回调函数&quot;&gt;回调函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#回调函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; fn&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;执行了&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;集合操作&quot;&gt;集合操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#集合操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;forEach&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;map（转换）&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; newList &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;箭头简化：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; newList &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; item &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;where（过滤）&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;返回函数闭包&quot;&gt;返回函数（闭包）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#返回函数闭包&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;makeAdder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;int y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; add5 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;makeAdder&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;临时逻辑立即执行函数&quot;&gt;临时逻辑(立即执行函数)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#临时逻辑立即执行函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;立即执行&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>dart---下载Flutter和dart基本类型</title><link>https://huyangpahuo.vercel.app/posts/dart-xia-zai-flutter-he-dart-ji-ben-lei-xing/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/dart-xia-zai-flutter-he-dart-ji-ben-lei-xing/</guid><description>我们来学习一下flutter的配套语言dart</description><pubDate>Wed, 15 Apr 2026 21:54:04 GMT</pubDate><content:encoded>&lt;h1 id=&quot;flutter可以用来制作跨平台应用配套语言是dart&quot;&gt;flutter可以用来制作跨平台应用,配套语言是dart&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#flutter可以用来制作跨平台应用配套语言是dart&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;配置环境&quot;&gt;配置环境&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E4%B8%8B%E8%BD%BDFlutter%E5%92%8Cdart%E5%9F%BA%E6%9C%AC%E7%B1%BB%E5%9E%8B/image-20260415155821048.webp&quot; alt=&quot;image-20260415155821048&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;先&lt;a href=&quot;https://docs.flutter.dev/install/quick&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;下载dartsdk&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载完成后终端输入检测是否下载成功&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dart --version
flutter
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我习惯用VScode,所以你们要是用VScode的话去下载flutter和dart相关的插件(Trae和cursor还有windsurf本质上也是VScode,插件一般都一样)&lt;/p&gt;
&lt;h2 id=&quot;dart语言&quot;&gt;dart语言&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dart语言&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为我学过很多语言,而这些语言基本上差不多,dart给我的感觉很像java和C#,包括C#里的很多概念dart里都有(估计是开发dart的照抄C#这种的)&lt;/p&gt;
&lt;p&gt;和C#一样,这个必须在main函数中运行&lt;/p&gt;
&lt;h2 id=&quot;变量&quot;&gt;变量&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#变量&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;关键字 / 类型&lt;/th&gt;&lt;th&gt;是否可重新赋值&lt;/th&gt;&lt;th&gt;是否可变类型&lt;/th&gt;&lt;th&gt;是否必须初始化&lt;/th&gt;&lt;th&gt;是否编译时常量&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;var&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;自动推断类型（最常用）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;int / String / num / double / bool&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;显式类型（推荐规范写法）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;dynamic&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;动态类型（不安全，慎用）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Object&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌（需强转）&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;所有类型父类（更安全）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;final&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌（只能一次）&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;运行时常量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;const&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌（完全不可变）&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;编译时常量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;late&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌（可延迟）&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;延迟初始化（常用于Flutter）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;late final&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌（只能一次）&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;延迟 + 单次赋值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;其中var  int String double bool Object  const这些我们已经相当熟悉了,其中num表示整数或小数&lt;/p&gt;
&lt;p&gt;但是这里面的其他的一些我们是第一次见&lt;/p&gt;
&lt;h3 id=&quot;数字类型&quot;&gt;数字类型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#数字类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;num (父类)&lt;br&gt;
├── int (整型)&lt;br&gt;
└── double (浮点型)&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;赋值方向&lt;/th&gt;&lt;th&gt;是否允许&lt;/th&gt;&lt;th&gt;原因&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;int&lt;/code&gt; → &lt;code&gt;num&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅ 允许&lt;/td&gt;&lt;td&gt;子类赋值给父类（向上转型）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;double&lt;/code&gt; → &lt;code&gt;num&lt;/code&gt;&lt;/td&gt;&lt;td&gt;✅ 允许&lt;/td&gt;&lt;td&gt;子类赋值给父类（向上转型）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;num&lt;/code&gt; → &lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌ 不允许&lt;/td&gt;&lt;td&gt;父类不能隐式转为子类&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;num&lt;/code&gt; → &lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌ 不允许&lt;/td&gt;&lt;td&gt;父类不能隐式转为子类&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;int&lt;/code&gt; → &lt;code&gt;double&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌ 不允许&lt;/td&gt;&lt;td&gt;不同类型，不能隐式转换&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;double&lt;/code&gt; → &lt;code&gt;int&lt;/code&gt;&lt;/td&gt;&lt;td&gt;❌ 不允许&lt;/td&gt;&lt;td&gt;不同类型，不能隐式转换&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里我们知道隐式转换和显示转换&lt;/p&gt;
&lt;p&gt;对于隐式转换&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  double d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.14&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// int 可以赋值给 num&lt;/span&gt;
  num n1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;n1: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 类型: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n1&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;runtimeType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// n1: 10, 类型: int&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// double 可以赋值给 num&lt;/span&gt;
  num n2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; d&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;n2: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n2&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 类型: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;runtimeType&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// n2: 3.14, 类型: double&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// num 变量可以接受任意数字&lt;/span&gt;
  num n3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 存 int&lt;/span&gt;
  n3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2.718&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 改存 double&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;n3: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n3&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// n3: 2.718&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于显示转换(其实就是调用方法比如to...()这种方法)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  num n &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// ✅ 显式转 int&lt;/span&gt;
  int i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;i: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// i: 10&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// ✅ 显式转 double&lt;/span&gt;
  double d &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toDouble&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;d&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// d: 10.0&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// int 转 double&lt;/span&gt;
  int i2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  double d2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toDouble&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// ✅ 10 → 10.0&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d2: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;d2&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// double 转 int（截断小数）&lt;/span&gt;
  double d3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.99&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int i3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; d3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toInt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// ✅ 3.99 → 3（不是四舍五入！）&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;i3: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;i3&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// i3: 3&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// double 四舍五入&lt;/span&gt;
  int i4 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; d3&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;round&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// ✅ 3.99 → 4&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;i4: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;i4&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;final&quot;&gt;final&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#final&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;当需要存储一个不变的数据，但是在运时才确定，需要使final声明常量&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;编译时常量：当需要存储一个不变的数据，且在编译时就确定，需要使const声明常量&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Dart/dart---%E4%B8%8B%E8%BD%BDFlutter%E5%92%8Cdart%E5%9F%BA%E6%9C%AC%E7%B1%BB%E5%9E%8B/image-20260415165147420.webp&quot; alt=&quot;image-20260415165147420&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Circle&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// final 实例变量必须在声明时或构造函数中初始化&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; double radius&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; double pi &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.14159&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 声明时初始化&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 构造函数初始化列表&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Circle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;radius&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  double &lt;span class=&quot;token keyword&quot;&gt;get&lt;/span&gt; area &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; pi &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; radius &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; radius&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; circle &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Circle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5.0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;面积: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;circle&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;area&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 78.53975&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// circle.radius = 10.0;  // ❌ 错误：不能修改 final 字段&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个也是和const常量一样赋值之后不可以再次修改&lt;/p&gt;
&lt;h3 id=&quot;string&quot;&gt;String&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#string&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;string-基础&quot;&gt;String 基础&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#string-基础&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 三种创建方式&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; s1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;单引号&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; s2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;双引号&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; s3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&apos;&apos;多行
  字符串
  支持换行&apos;&apos;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;字符串插值&quot;&gt;字符串插值&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#字符串插值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Dart&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int version &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// $变量名&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;语言: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// ${表达式}&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;版本: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;version &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;大写: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;name&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toUpperCase&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;string常用方法&quot;&gt;String常用方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#string常用方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;toString()方法将其他类型转换为字符串&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  num a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5555&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;{% hideToggle 其他方法 %}&lt;/p&gt;
&lt;h5 id=&quot;一长度--判空&quot;&gt;一、长度 / 判空&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一长度--判空&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;String s = &quot;hello&quot;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;length&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符长度&lt;/td&gt;&lt;td&gt;&lt;code&gt;s.length → 5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;isEmpty&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否为空&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;&quot;.isEmpty → true&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;isNotEmpty&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否不为空&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hi&quot;.isNotEmpty → true&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h5 id=&quot;二查找--判断&quot;&gt;二、查找 / 判断&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二查找--判断&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;contains()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否包含&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.contains(&quot;he&quot;) → true&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;startsWith()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否以…开头&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.startsWith(&quot;h&quot;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;endsWith()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否以…结尾&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.endsWith(&quot;o&quot;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;indexOf()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;第一次出现位置&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.indexOf(&quot;l&quot;) → 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;lastIndexOf()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;最后一次出现&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.lastIndexOf(&quot;l&quot;) → 3&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h5 id=&quot;三截取--分割&quot;&gt;三、截取 / 分割&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三截取--分割&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;substring(start, end)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;截取字符串&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.substring(1,3) → &quot;el&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;split()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;分割字符串&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;a,b,c&quot;.split(&quot;,&quot;) → [&quot;a&quot;,&quot;b&quot;,&quot;c&quot;]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h5 id=&quot;四替换&quot;&gt;四、替换&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#四替换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;replaceAll()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;替换全部&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;aabb&quot;.replaceAll(&quot;a&quot;,&quot;x&quot;) → &quot;xxbb&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;replaceFirst()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;替换第一个&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;aabb&quot;.replaceFirst(&quot;a&quot;,&quot;x&quot;) → &quot;xabb&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h5 id=&quot;五大小写转换&quot;&gt;五、大小写转换&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#五大小写转换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;toLowerCase()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;转小写&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;HELLO&quot;.toLowerCase()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;toUpperCase()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;转大写&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hello&quot;.toUpperCase()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h5 id=&quot;六去空格&quot;&gt;六、去空格&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#六去空格&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;方法&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;trim()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;去两边空格&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot; hi &quot;.trim() → &quot;hi&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;trimLeft()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;去左边&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot; hi&quot;.trimLeft()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;trimRight()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;去右边&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;hi &quot;.trimRight()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;{% endhideToggle %}&lt;/p&gt;
&lt;h3 id=&quot;list列表类型&quot;&gt;List列表类型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#list列表类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和C#里的几乎一样,C#里面也有list,不过list和数组差不多,包括访问数组里的元素方法也是一样的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 三种创建方式&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; numbers &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;token comment&quot;&gt;// 字面量&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; fruits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;apple&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;banana&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 类型推断&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                &lt;span class=&quot;token comment&quot;&gt;// 空列表（growable: false）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt; growable &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;growable&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 可增长的空列表&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numbers&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [1, 2, 3]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;常用的方法:&lt;/p&gt;
&lt;p&gt;在尾部添加------------add（内容）&lt;/p&gt;
&lt;p&gt;在尾部添加一个列表------------addAll (列表)&lt;/p&gt;
&lt;p&gt;删除满足内容的第一个----------remove(内容)&lt;/p&gt;
&lt;p&gt;删除最后一个-----------removeLast()&lt;/p&gt;
&lt;p&gt;删除索引范围内数据----------removeRange(start,end)&lt;/p&gt;
&lt;p&gt;循环-------------forEach((item) {});&lt;/p&gt;
&lt;p&gt;是否都满足条件---------------every((item){return 布尔值 })；&lt;/p&gt;
&lt;p&gt;筛选出满足条件的数据---------------where((item){return 布尔值 })；&lt;/p&gt;
&lt;p&gt;列表的长度(属性)-length&lt;/p&gt;
&lt;p&gt;最后一个元素(属性)--------------last&lt;/p&gt;
&lt;p&gt;第一个元素(属性)-first是否为空(属性）-----------isEmpty&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; colors &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;red&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;green&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; color1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;skyblue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 尾部添加&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 尾部添加一个列表&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;color1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 删除某一个（删除第一个匹配的）&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 删除最后一个&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeLast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 删除索引范围内的数据（start &amp;#x3C;= index &amp;#x3C; end）&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeRange&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 循环遍历&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 是否都满足条件&lt;/span&gt;
  bool allStartWithR &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;every&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;startsWith&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;是否全部以 r 开头: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;allStartWithR&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 筛选满足条件的数据&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;e&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;包含 e 的元素: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;result&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 长度&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;长度: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 第一个元素&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第一个: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;first&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 最后一个元素&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;最后一个: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;last&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;// 是否为空&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;是否为空: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEmpty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; colors &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;红red&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;绿green&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;蓝blue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; color1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;天蓝skyblue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//是否所有元素都满足条件&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;every&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;startsWith&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;红&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//筛选出满足条件的元素&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;startsWith&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;绿&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;{% hideToggle 具体例子 %}&lt;/p&gt;
&lt;h4 id=&quot;访问与修改&quot;&gt;访问与修改&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#访问与修改&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; colors &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;red&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;green&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;blue&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 访问元素&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// red（第一个）&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;first&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// red&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;last&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// blue&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 3&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 修改元素&lt;/span&gt;
  colors&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;yellow&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [red, yellow, blue]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 安全访问&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;colors&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;elementAtOrNull&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// null（不会报错）&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;添加元素&quot;&gt;添加元素&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加元素&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 添加单个&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;token comment&quot;&gt;// [1]&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// [1, 2, 3]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 指定位置插入&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// [0, 1, 2, 3]（在索引0插入0）&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insertAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;99&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [0, 1, 99, 100, 2, 3]&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;删除元素&quot;&gt;删除元素&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#删除元素&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; items &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按值删除（第一个匹配）&lt;/span&gt;
  items&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// [&apos;a&apos;, &apos;c&apos;, &apos;b&apos;, &apos;d&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按索引删除&lt;/span&gt;
  items&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeAt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// [&apos;c&apos;, &apos;b&apos;, &apos;d&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 删除最后一个&lt;/span&gt;
  items&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeLast&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;    &lt;span class=&quot;token comment&quot;&gt;// [&apos;c&apos;, &apos;b&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按条件删除&lt;/span&gt;
  items&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeWhere&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; e &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;c&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 清空&lt;/span&gt;
  items&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;         &lt;span class=&quot;token comment&quot;&gt;// []&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;查询与查找&quot;&gt;查询与查找&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#查询与查找&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; numbers &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;40&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 包含判断&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;contains&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 查找位置&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;indexOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// 2&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;lastIndexOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 0&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 查找元素（按条件）&lt;/span&gt;
  int first &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;firstWhere&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 30&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; safe &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;firstWhere&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; orElse&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// -1&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 查找索引&lt;/span&gt;
  int idx &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;indexWhere&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;25&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 2&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;first: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;first&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, idx: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;idx&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;切片与范围&quot;&gt;切片与范围&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#切片与范围&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;e&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 获取子列表（视图，修改会影响原列表）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; sub &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sublist&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;b&apos;, &apos;c&apos;, &apos;d&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 范围替换&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;replaceRange&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;X&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Y&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;a&apos;, &apos;X&apos;, &apos;Y&apos;, &apos;d&apos;, &apos;e&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 填充范围&lt;/span&gt;
  list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fillRange&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Z&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;Z&apos;, &apos;Z&apos;, &apos;Y&apos;, &apos;d&apos;, &apos;e&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;list&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;排序与反转&quot;&gt;排序与反转&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#排序与反转&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; nums &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 原地排序&lt;/span&gt;
  nums&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [1, 1, 2, 3, 4, 5, 6, 9]&lt;/span&gt;
  nums&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 降序 [9, 6, 5, 4, 3, 2, 1, 1]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 自定义排序&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fruits &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;banana&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;apple&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;pie&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  fruits&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;compareTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;pie&apos;, &apos;apple&apos;, &apos;banana&apos;]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 反转（返回新列表）&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; reversed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nums&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;reversed&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [9, 6, 5, 4, 3, 2, 1, 1]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 原地反转&lt;/span&gt;
  nums &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// Dart 没有原地反转方法，需要手动或转数组&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;映射与过滤&quot;&gt;映射与过滤&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#映射与过滤&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; numbers &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// map：转换每个元素&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; strings &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;No.&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;n&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;strings&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [No.1, No.2, No.3, No.4, No.5]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// where：过滤&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; evens &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEven&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;evens&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [2, 4]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// expand：展开嵌套&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; nested &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; flat &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; nested&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;expand&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;flat&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [1, 2, 3, 4]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 链式操作&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; numbers
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// [3, 4, 5]&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; n &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;         &lt;span class=&quot;token comment&quot;&gt;// [6, 8, 10]&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;聚合操作&quot;&gt;聚合操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#聚合操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; scores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;92&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;78&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;88&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 遍历&lt;/span&gt;
  scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 折叠/归约&lt;/span&gt;
  int sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 433&lt;/span&gt;
  int total &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fold&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;acc&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; acc &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 433（带初始值）&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 条件判断&lt;/span&gt;
  bool allPass &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;every&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
  bool hasExcellent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;any&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 查找极值&lt;/span&gt;
  int max &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; a &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 92&lt;/span&gt;
  int min &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; a &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 78&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;总分: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;total&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;, 最高分: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;max&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;固定长度-vs-可增长&quot;&gt;固定长度 vs 可增长&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#固定长度-vs-可增长&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 可增长列表（默认）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; growable &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  growable&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// ✅ 可以添加&lt;/span&gt;
  growable&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ✅ 可以改长度（填充null）&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 固定长度列表&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; fixed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;filled&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [0, 0, 0]&lt;/span&gt;
  fixed&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// ✅ 可以修改元素&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// fixed.add(4);      // ❌ 错误：不能添加&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// fixed.length = 5;  // ❌ 错误：不能改长度&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 从可增长转固定&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; fixed2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;unmodifiable&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;growable&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 不可修改的列表&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// fixed2[0] = 100;   // ❌ 运行时错误&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;growable: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;growable&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;fixed: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;fixed&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;展开运算符&quot;&gt;展开运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#展开运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; list2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 展开 ...（合并列表）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; combined &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;list1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;list2&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [1, 2, 3, 4, 5, 6]&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 条件展开&lt;/span&gt;
  bool showExtra &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; conditional &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;showExtra&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 条件成立才展开&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// for 展开&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; repeated &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; i &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;item-&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;i&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// [&apos;item-1&apos;, &apos;item-2&apos;, &apos;item-3&apos;]&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;combined&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;conditional&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;repeated&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;操作&lt;/th&gt;&lt;th&gt;方法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;添加&lt;/td&gt;&lt;td&gt;&lt;code&gt;add()&lt;/code&gt;, &lt;code&gt;addAll()&lt;/code&gt;, &lt;code&gt;insert()&lt;/code&gt;, &lt;code&gt;insertAll()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;删除&lt;/td&gt;&lt;td&gt;&lt;code&gt;remove()&lt;/code&gt;, &lt;code&gt;removeAt()&lt;/code&gt;, &lt;code&gt;removeLast()&lt;/code&gt;, &lt;code&gt;removeWhere()&lt;/code&gt;, &lt;code&gt;clear()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;访问&lt;/td&gt;&lt;td&gt;&lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;first&lt;/code&gt;, &lt;code&gt;last&lt;/code&gt;, &lt;code&gt;elementAt()&lt;/code&gt;, &lt;code&gt;single&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查找&lt;/td&gt;&lt;td&gt;&lt;code&gt;contains()&lt;/code&gt;, &lt;code&gt;indexOf()&lt;/code&gt;, &lt;code&gt;indexWhere()&lt;/code&gt;, &lt;code&gt;firstWhere()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;切片&lt;/td&gt;&lt;td&gt;&lt;code&gt;sublist()&lt;/code&gt;, &lt;code&gt;getRange()&lt;/code&gt;, &lt;code&gt;replaceRange()&lt;/code&gt;, &lt;code&gt;fillRange()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;排序&lt;/td&gt;&lt;td&gt;&lt;code&gt;sort()&lt;/code&gt;, &lt;code&gt;reversed&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;转换&lt;/td&gt;&lt;td&gt;&lt;code&gt;map()&lt;/code&gt;, &lt;code&gt;where()&lt;/code&gt;, &lt;code&gt;expand()&lt;/code&gt;, &lt;code&gt;cast&amp;#x3C;T&gt;()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;聚合&lt;/td&gt;&lt;td&gt;&lt;code&gt;forEach()&lt;/code&gt;, &lt;code&gt;reduce()&lt;/code&gt;, &lt;code&gt;fold()&lt;/code&gt;, &lt;code&gt;every()&lt;/code&gt;, &lt;code&gt;any()&lt;/code&gt;, &lt;code&gt;join()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;其他&lt;/td&gt;&lt;td&gt;&lt;code&gt;shuffle()&lt;/code&gt;, &lt;code&gt;asMap()&lt;/code&gt;, &lt;code&gt;toSet()&lt;/code&gt;, &lt;code&gt;toString()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;{% endhideToggle %}&lt;/p&gt;
&lt;h3 id=&quot;map字典类型&quot;&gt;Map字典类型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#map字典类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和C#里Dictionary的一样&lt;/p&gt;
&lt;p&gt;字典这个已经很熟悉了只不过这里的字典格式和列表差不多,反正和其他语言里的一样就是键值对&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 三种创建方式&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; scores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bob&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 字面量&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; ages &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Tom&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Jerry&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// 类型推断&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt; empty &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                                       &lt;span class=&quot;token comment&quot;&gt;// 空 Map&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 构造函数创建&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; config &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; numbers &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;one&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;two&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;scores&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {Alice: 90, Bob: 85}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;循环---------forEach&lt;/p&gt;
&lt;p&gt;在添加一个字典-------------addAll&lt;/p&gt;
&lt;p&gt;是否包含某个key------------containsKey&lt;/p&gt;
&lt;p&gt;删除某个key----------remove&lt;/p&gt;
&lt;p&gt;清空---------clear&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;女儿&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;阿尼亚&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;母亲&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;约尔&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;父亲&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;劳埃德&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//循环 forEach&lt;/span&gt;
  player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;key&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//再添加一个字典--addAll&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; player2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;同学&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;达米安&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//是否包含某个键&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;containsKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;女儿&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//true&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;containsKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;儿子&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//false&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//删除某个键&lt;/span&gt;
  player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;同学&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//清空字典&lt;/span&gt;
  player&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//{}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;{% hideToggle 具体例子 %}&lt;/p&gt;
&lt;h4 id=&quot;添加与修改&quot;&gt;添加与修改&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#添加与修改&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; map &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 添加键值对&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;token comment&quot;&gt;// 直接赋值&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;putIfAbsent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// key不存在时才添加&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 批量添加&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 修改值&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;         &lt;span class=&quot;token comment&quot;&gt;// 已存在则覆盖&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 更新（基于旧值）&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;           &lt;span class=&quot;token comment&quot;&gt;// 100 -&gt; 200&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;update&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;z&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ifAbsent&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 不存在则设为0&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {a: 200, b: 2, c: 3, d: 4, z: 0}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;删除&quot;&gt;删除&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#删除&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; map &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;d&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按键删除&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// 删除key &apos;a&apos;，返回被删的值（1），不存在返回null&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 条件删除&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;removeWhere&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;isEven&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 删除值为偶数的项（b:2, d:4）&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 清空&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// map.clear();&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {c: 3}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;访问与查询&quot;&gt;访问与查询&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#访问与查询&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; map &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bob&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Carol&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;95&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 访问值&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// 90&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Unknown&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// null（key不存在）&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 安全访问&lt;/span&gt;
  int&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; score &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Unknown&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  int safe &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Unknown&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 不存在返回默认值0&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 检查存在性&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;containsKey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// true&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;containsValue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// false&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 获取键值集合&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keys&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// (Alice, Bob, Carol)&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// (90, 85, 95)&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// (MapEntry(Alice: 90), ...)&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 遍历&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;k&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;v&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;遍历方式&quot;&gt;遍历方式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#遍历方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; map &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式1：forEach&lt;/span&gt;
  map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;key&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; = &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式2：for-in entries&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; entry &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;entry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;entry&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式3：解构遍历（Dart 3）&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MapEntry&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;key&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt; -&gt; &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token expression&quot;&gt;value&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式4：只遍历key或value&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; k &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;keys&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; map&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;转换与映射&quot;&gt;转换与映射&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#转换与映射&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; scores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bob&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Carol&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;95&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// map：转换每个值&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; grades &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; 
    &lt;span class=&quot;token class-name&quot;&gt;MapEntry&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;B&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;grades&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {Alice: A, Bob: B, Carol: A}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 过滤（没有直接filter，需要转换）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; excellent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;where&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;excellent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {Alice: 90, Carol: 95}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 键值互换&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; reversed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MapEntry&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;reversed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {90: Alice, 85: Bob, 95: Carol}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;合并与操作&quot;&gt;合并与操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#合并与操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; m1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; m2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// b冲突&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 展开合并（Dart 2.3+）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; combined &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;m1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;m2&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// m2的b覆盖m1的b&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;combined&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {a: 1, b: 20, c: 3}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 自定义合并（处理冲突）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; merged &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  merged&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;addAll&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;m1&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  m2&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;forEach&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    merged&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;merged&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 值相加&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;merged&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {a: 1, b: 22, c: 3}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 条件展开&lt;/span&gt;
  bool useM2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; conditional &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;m1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;useM2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;m2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;常用构造函数&quot;&gt;常用构造函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#常用构造函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// 固定key，延迟计算value&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; lazy &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromIterable&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;b&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;c&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    key&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    value&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;item&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; item&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;codeUnitAt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;lazy&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {a: 97, b: 98, c: 99}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 分组（Dart 2.13+）&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; words &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;apple&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;banana&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;apricot&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;blueberry&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; grouped &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; words&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 按首字母分组&lt;/span&gt;
    grouped&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;putIfAbsent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;grouped&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {a: [apple, apricot], b: [banana, blueberry]}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 不可变Map&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; readonly &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;unmodifiable&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;a&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// readonly[&apos;a&apos;] = 2;  // ❌ 运行时错误&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;排序与排序后的map&quot;&gt;排序与排序后的Map&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#排序与排序后的map&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; scores &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Bob&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Alice&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;90&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;Carol&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;95&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按键排序（返回List）&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; sortedByKey &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;compareTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sortedByKey&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {Alice: 90, Bob: 85, Carol: 95}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 按值排序&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; sortedByValue &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fromEntries&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    scores&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;entries&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;toList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;compareTo&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;sortedByValue&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {Bob: 85, Alice: 90, Carol: 95}&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// SplayTreeMap：自动按键排序（需要import &apos;dart:collection&apos;）&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;// final sortedMap = SplayTreeMap&amp;#x3C;String, int&gt;.from(scores);&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;默认值处理&quot;&gt;默认值处理&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#默认值处理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt; groups &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式1：putIfAbsent（推荐）&lt;/span&gt;
  groups&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;putIfAbsent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  groups&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;putIfAbsent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;A&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 不会创建新列表&lt;/span&gt;
  
  &lt;span class=&quot;token comment&quot;&gt;// 方式2：扩展方法（需要collection_for）&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;groups&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&apos;B&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;groups&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// {A: [1, 2], B: [3]}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;操作&lt;/th&gt;&lt;th&gt;方法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;添加/修改&lt;/td&gt;&lt;td&gt;&lt;code&gt;[] =&lt;/code&gt;, &lt;code&gt;putIfAbsent()&lt;/code&gt;, &lt;code&gt;addAll()&lt;/code&gt;, &lt;code&gt;update()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;删除&lt;/td&gt;&lt;td&gt;&lt;code&gt;remove()&lt;/code&gt;, &lt;code&gt;removeWhere()&lt;/code&gt;, &lt;code&gt;clear()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;访问&lt;/td&gt;&lt;td&gt;&lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;containsKey()&lt;/code&gt;, &lt;code&gt;containsValue()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;获取集合&lt;/td&gt;&lt;td&gt;&lt;code&gt;.keys&lt;/code&gt;, &lt;code&gt;.values&lt;/code&gt;, &lt;code&gt;.entries&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;遍历&lt;/td&gt;&lt;td&gt;&lt;code&gt;forEach()&lt;/code&gt;, &lt;code&gt;for-in&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;转换&lt;/td&gt;&lt;td&gt;&lt;code&gt;map()&lt;/code&gt;, &lt;code&gt;Map.fromEntries()&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;合并&lt;/td&gt;&lt;td&gt;&lt;code&gt;{...m1, ...m2}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;其他&lt;/td&gt;&lt;td&gt;&lt;code&gt;cast()&lt;/code&gt;, &lt;code&gt;updateAll()&lt;/code&gt;, &lt;code&gt;isEmpty&lt;/code&gt;, &lt;code&gt;length&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;{% endhideToggle %}&lt;/p&gt;
&lt;h3 id=&quot;dynamic不要用&quot;&gt;dynamic(不要用)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dynamic不要用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;dynamic&lt;/code&gt; 是 Dart 的一个特殊类型，表示&lt;strong&gt;禁用静态类型检查&lt;/strong&gt;，可以在运行时持有任何类型的值，并可以调用任何方法（编译时不检查）&lt;/p&gt;
&lt;p&gt;说人话就是完全不做类型检查，啥都能放&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;dynamic和var和object的区别:&lt;/p&gt;
&lt;p&gt;dynamic------运时可自由改变类型，(无编译检查，方法和属性直接调用)&lt;/p&gt;
&lt;p&gt;var-----根据初始值进行推断类型，确定类型后类型确定，(有编译检查，仅限推断的属性和方法)&lt;/p&gt;
&lt;p&gt;Object------所有类型的父类，可接收任意类型，但访问成员需进行类型判断或强制转换，（有编译检查，不可直接调用具体类型的方法）&lt;/p&gt;
&lt;p&gt;简而言之就是var和Object一旦确定类型就不可改,而dynamic随便改&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;dynamic&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;123&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;由此可见这玩意太自由了,所以能不用就不用&lt;/p&gt;
&lt;h3 id=&quot;late&quot;&gt;late&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#late&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;late&lt;/code&gt; 是 Dart 的空安全特性，用于&lt;strong&gt;延迟初始化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它告诉编译器：&quot;这个变量稍后一定会被赋值，现在先别检查它是否为空&quot;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;late &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 后面再赋值&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;核心特点&quot;&gt;核心特点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#核心特点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;变量&lt;strong&gt;先声明&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稍后再赋值&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;使用前必须赋值，否则报错&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;late-final&quot;&gt;late final&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#late-final&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个等于late+ final就是不可更改的延迟初始化的类型,没什么好说的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;late &lt;span class=&quot;token keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// ✅ 第一次赋值&lt;/span&gt;
  name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Jack&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ❌ 报错&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;空安全机制空安全运算符&quot;&gt;空安全机制(空安全运算符)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#空安全机制空安全运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在dart中,默认情况下，变量不能是 null，除非你明确允许它为 null&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;操作符&lt;/th&gt;&lt;th&gt;符号&lt;/th&gt;&lt;th&gt;作用说明&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;可空类型&lt;/td&gt;&lt;td&gt;&lt;code&gt;?&lt;/code&gt;&lt;/td&gt;&lt;td&gt;声明变量可以为 &lt;code&gt;null&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;String? name&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;安全访问&lt;/td&gt;&lt;td&gt;&lt;code&gt;?.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;对象为 &lt;code&gt;null&lt;/code&gt; 时跳过调用并返回 &lt;code&gt;null&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;user?.name&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;非空断言&lt;/td&gt;&lt;td&gt;&lt;code&gt;!.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;强制认为变量不为 &lt;code&gt;null&lt;/code&gt;（否则运行时报错）&lt;/td&gt;&lt;td&gt;&lt;code&gt;name!.length&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;空合并&lt;/td&gt;&lt;td&gt;&lt;code&gt;??&lt;/code&gt;&lt;/td&gt;&lt;td&gt;左侧为 &lt;code&gt;null&lt;/code&gt; 时返回右侧默认值&lt;/td&gt;&lt;td&gt;&lt;code&gt;name ?? &quot;Guest&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;空值赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;??=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;仅当变量为 &lt;code&gt;null&lt;/code&gt; 时才进行赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;name ??= &quot;Tom&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;级联安全访问&lt;/td&gt;&lt;td&gt;&lt;code&gt;?..&lt;/code&gt;&lt;/td&gt;&lt;td&gt;对象为 &lt;code&gt;null&lt;/code&gt; 时不执行后续级联操作&lt;/td&gt;&lt;td&gt;&lt;code&gt;user?..setName(&quot;Tom&quot;)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;空展开&lt;/td&gt;&lt;td&gt;&lt;code&gt;...?&lt;/code&gt;&lt;/td&gt;&lt;td&gt;集合为 &lt;code&gt;null&lt;/code&gt; 时跳过展开&lt;/td&gt;&lt;td&gt;&lt;code&gt;[...?list]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;dart&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-dart&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//可空类型(声明变量可以为null)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ✅ 可以&lt;/span&gt;
  name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ✅ 也可以&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//安全访问(对象为 null 时跳过调用并返回 null)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name_1&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_1&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出null&lt;/span&gt;

  name_1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_1&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出3&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//非空断言(强制认为变量不为 null（否则运行时报错）)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name_2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_2&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ✅ 3&lt;/span&gt;

  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token comment&quot;&gt;//print(a!.length); // ❌ 运行时崩溃&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//空合并(左侧为 null 时返回右侧默认值)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name_3&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_3 &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Guest&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Guest&lt;/span&gt;

  name_3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_3 &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Guest&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Tom&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//空合并赋值(仅当变量为 null 时才进行赋值)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; name_4&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  name_4 &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_4&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Tom&lt;/span&gt;

  name_4 &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Jack&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_4&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 还是 Tom（不会被覆盖）&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//级联安全访问(对象为 null 时不执行后续级联操作)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; user&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  user&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// ✅ 不会报错（因为 user 是 null）&lt;/span&gt;

  user &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  user&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Tom&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;user&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// Tom&lt;/span&gt;

  &lt;span class=&quot;token comment&quot;&gt;//空展开(集合为 null 时跳过展开)&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;List&lt;/span&gt;&lt;span class=&quot;token generics&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;int&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; list&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; newList &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;list&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newList&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// [1, 2]&lt;/span&gt;

  list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; newList2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt;list&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newList2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// [1, 2, 3, 4]&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;User&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string-literal&quot;&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;setName&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;运算符&quot;&gt;运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;算术运算符&quot;&gt;算术运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#算术运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;加法&lt;/td&gt;&lt;td&gt;&lt;code&gt;1 + 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;&lt;td&gt;减法&lt;/td&gt;&lt;td&gt;&lt;code&gt;5 - 3&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;乘法&lt;/td&gt;&lt;td&gt;&lt;code&gt;2 * 3&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;除法（结果是double）&lt;/td&gt;&lt;td&gt;&lt;code&gt;5 / 2 = 2.5&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;~/&lt;/code&gt;&lt;/td&gt;&lt;td&gt;整除&lt;/td&gt;&lt;td&gt;&lt;code&gt;5 ~/ 2 = 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%&lt;/code&gt;&lt;/td&gt;&lt;td&gt;取余&lt;/td&gt;&lt;td&gt;&lt;code&gt;5 % 2 = 1&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;自增自减&quot;&gt;自增自减&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#自增自减&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;++&lt;/code&gt;&lt;/td&gt;&lt;td&gt;自增&lt;/td&gt;&lt;td&gt;&lt;code&gt;a++&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;--&lt;/code&gt;&lt;/td&gt;&lt;td&gt;自减&lt;/td&gt;&lt;td&gt;&lt;code&gt;a--&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;关系运算符&quot;&gt;关系运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关系运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;==&lt;/code&gt;&lt;/td&gt;&lt;td&gt;等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a == b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;不等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a != b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &gt; b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;#x3C;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;小于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &amp;#x3C; b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&gt;=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大于等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &gt;= b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;#x3C;=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;小于等于&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &amp;#x3C;= b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;赋值运算符&quot;&gt;赋值运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#赋值运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a = 10&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;+=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;加后赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a += 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;-=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;减后赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a -= 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;*=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;乘后赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a *= 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;/=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;除后赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a /= 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;~/=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;整除赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a ~/= 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%=&lt;/code&gt;&lt;/td&gt;&lt;td&gt;取余赋值&lt;/td&gt;&lt;td&gt;&lt;code&gt;a %= 2&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;逻辑运算符&quot;&gt;逻辑运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#逻辑运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运算符&lt;/th&gt;&lt;th&gt;名称&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;!&lt;/code&gt;&lt;/td&gt;&lt;td&gt;非&lt;/td&gt;&lt;td&gt;取反&lt;/td&gt;&lt;td&gt;&lt;code&gt;!true&lt;/code&gt; → &lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;&amp;#x26;&amp;#x26;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;与&lt;/td&gt;&lt;td&gt;两边都为 true&lt;/td&gt;&lt;td&gt;&lt;code&gt;a &amp;#x26;&amp;#x26; b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;||&lt;/code&gt;&lt;/td&gt;&lt;td&gt;或&lt;/td&gt;&lt;td&gt;至少一边为 true&lt;/td&gt;&lt;td&gt;&lt;code&gt;a || b&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content:encoded><category>Flutter</category><category>Flutter</category><category>Dart</category></item><item><title>lua---模块与包</title><link>https://huyangpahuo.vercel.app/posts/lua-mo-kuai-yu-bao/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/lua-mo-kuai-yu-bao/</guid><description>我们继续学习lua里的模块还有包</description><pubDate>Mon, 13 Apr 2026 19:33:59 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天我们继续学习lua里的模块还有包&quot;&gt;今天我们继续学习lua里的模块还有包&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天我们继续学习lua里的模块还有包&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;首先说一下这两个东西的概念&lt;/p&gt;
&lt;h2 id=&quot;模块module&quot;&gt;模块(module)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#模块module&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lua 的模块是由变量、函数等已知元素组成的 table,然后把需要导出的常量、函数放入其中&lt;/p&gt;
&lt;p&gt;特殊之处就是模块返回值 就是这个表&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- utils.lua&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; utils &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; utils&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; utils&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; b
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; utils
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是怎么用呢,其实,Lua 模块 ≈ C# 的 命名空间 + 静态类 + 单例实例&lt;/p&gt;
&lt;p&gt;相同含义的C#语句就是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;Utils&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Math&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&gt;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用就是不需要实现类的实例,直接using引入命名空间然后点语法使用里面的属性就行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;Utils&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Program&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Math&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里在lua中的使用方法就是使用require函数&lt;/p&gt;
&lt;h3 id=&quot;require-函数&quot;&gt;require 函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#require-函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;要使用文件使用一个模块使用require函数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;require(&quot;&amp;#x3C;模块名&gt;&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;require &quot;&amp;#x3C;模块名&gt;&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;执行 require 后会返回一个由模块常量或函数组成的 table，并且还会定义一个包含该 table 的全局变量&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- 文件名为 module.lua&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 定义一个名为 module 的模块&lt;/span&gt;
module &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 定义一个常量&lt;/span&gt;
module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;constant &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;这是一个常量&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 定义一个函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;func1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是一个公有函数！\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;func2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是一个私有函数！&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;func3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;func2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; module
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们在另外一个文件启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- test_module.lua 文件&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- module 模块为上文提到到 module.lua&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;constant&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

module&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;func3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413202737035.webp&quot; alt=&quot;image-20260413202737035&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413202759729.webp&quot; alt=&quot;image-20260413202759729&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是大家可能会遇到的误区就是误以为模块里定义的表名就是文件名,其实不是的,&lt;/p&gt;
&lt;p&gt;此时我们就可以把这个module.lua当做命名空间,然后modele.lua里面的属性和函数视作C#里的静态static函数,使用直接用点语法就行&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413203756002.webp&quot; alt=&quot;image-20260413203756002&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413203812059.webp&quot; alt=&quot;image-20260413203812059&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;当你写：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;require(&quot;module&quot;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Lua 会做一件事： &lt;strong&gt;到一堆“固定路径”里去找 module.lua&lt;/strong&gt;,也就是它会尝试从 Lua 文件或 C 程序库中加载模块&lt;/p&gt;
&lt;p&gt;require 用于搜索 Lua 文件的路径是存放在全局变量 package.path 中，当 Lua 启动后，会以环境变量 LUA_PATH(这里我用的是我自定义的LUA_HOME,因为我的是lua5.4) 的值来初始这个环境变量。如果没有找到该环境变量，则使用一个编译时定义的默认路径来初始化。&lt;/p&gt;
&lt;p&gt;其实就是我们设置的path路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413212716317.webp&quot; alt=&quot;image-20260413212716317&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;lua会去这个路径package.path去找路径&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%A8%A1%E5%9D%97%E4%B8%8E%E5%8C%85/image-20260413211400410.webp&quot; alt=&quot;image-20260413211400410&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而在这些路径里&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\lua\?.lua;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\lua\?\init.lua;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\?.lua;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\?\init.lua;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\..\share\lua\5.4\?.lua;D:\ZeroBraneStudio\lua-5.4.2_Win64_bin\..\share\lua\5.4\?\init.lua;.\?.lua;.\?\init.lua;D:\ZeroBraneStudio\lua-5.1.5-52\5.1\lua\?.luac  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到有很多问号“?”,而问号就是占位符&lt;/p&gt;
&lt;p&gt;使用require(&quot;module&quot;)函数会把问号替换为module,然后lua会开始查找这个moule.lua文件,然后转换为类似执行过程&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- 1. 看缓存&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; package&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;loaded&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; package&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;loaded&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 2. 找文件路径&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./module.lua&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 3. 加载文件&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; f &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadfile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 4. 执行文件&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 5. 缓存&lt;/span&gt;
package&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;loaded&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;module&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; result

&lt;span class=&quot;token comment&quot;&gt;-- 6. 返回&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; result
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;而返回值就是刚才的模块里的表&lt;/p&gt;
&lt;h2 id=&quot;包package&quot;&gt;包(package)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#包package&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lua里有一个全局变量：package&lt;/p&gt;
&lt;p&gt;它其实是一个&lt;strong&gt;大工具箱&lt;/strong&gt;，里面专门负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;去哪里找模块&lt;/li&gt;
&lt;li&gt;怎么加载模块&lt;/li&gt;
&lt;li&gt;加载过的要不要再加载&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主要的四个功能就是&lt;/p&gt;
&lt;h3 id=&quot;-packagepath-控制-lua-模块搜索路径&quot;&gt;① package.path (控制 Lua 模块搜索路径）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-packagepath-控制-lua-模块搜索路径&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;控制：Lua 去哪里找 &lt;code&gt;.lua&lt;/code&gt; 文件&lt;/p&gt;
&lt;h3 id=&quot;-packageloaded-缓存机制&quot;&gt;② package.loaded (缓存机制)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-packageloaded-缓存机制&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;控制：模块是否重复加载&lt;/p&gt;
&lt;h3 id=&quot;-packagecpathc模块&quot;&gt;③ package.cpath（C模块）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-packagecpathc模块&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;用来找 &lt;code&gt;.dll / .so&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;-packagepreload虚拟模块&quot;&gt;④ package.preload（虚拟模块）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-packagepreload虚拟模块&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;手动注册模块（不需要文件）&lt;/p&gt;</content:encoded><category>Lua</category><category>Lua</category></item><item><title>VisualStudio保存为UTF-8方法</title><link>https://huyangpahuo.vercel.app/posts/visualstudio-bao-cun-wei-utf-8-fang-fa/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/visualstudio-bao-cun-wei-utf-8-fang-fa/</guid><description>本篇记载VS的文件格式设置为UTF-8的方法</description><pubDate>Wed, 08 Apr 2026 19:08:05 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天发现我的visual-studio居然一直都是gbk格式&quot;&gt;今天发现我的visual studio居然一直都是GBK格式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天发现我的visual-studio居然一直都是gbk格式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;由于Visual studio的默认的是跟随电脑的编码格式,所以我们有三种方式可以快速更改文件格式&lt;/p&gt;
&lt;h2 id=&quot;第一种安装fileencoding插件&quot;&gt;第一种:安装FileEncoding插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第一种安装fileencoding插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408191222747.webp&quot; alt=&quot;image-20260408191222747&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;安装后可以像VS code那样在界面的右下角显示当前的文件的格式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408191410508.webp&quot; alt=&quot;image-20260408191410508&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;第二种更改默认存储格式&quot;&gt;第二种:更改默认存储格式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第二种更改默认存储格式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;工具&lt;/code&gt; → &lt;code&gt;选项&lt;/code&gt; → &lt;code&gt;环境&lt;/code&gt; → &lt;code&gt;文档&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408191555902.webp&quot; alt=&quot;image-20260408191555902&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408191634120.webp&quot; alt=&quot;image-20260408191634120&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;第三种不依赖插件的方式&quot;&gt;第三种:不依赖插件的方式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第三种不依赖插件的方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;工具&lt;/code&gt; → &lt;code&gt;自定义&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408191913475.webp&quot; alt=&quot;image-20260408191913475&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后命令-&gt;文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192018424.webp&quot; alt=&quot;image-20260408192018424&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后添加命令,弹出一个窗口&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192055788.webp&quot; alt=&quot;image-20260408192055788&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;然后这个弹出的窗口往下翻找到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192224403.webp&quot; alt=&quot;image-20260408192224403&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后点击确定回到主界面,选择文件,可以发现多了一个这个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192349194.webp&quot; alt=&quot;image-20260408192349194&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192424902.webp&quot; alt=&quot;image-20260408192424902&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后选择你想要的就OK了&lt;/p&gt;
&lt;h2 id=&quot;注释颜色更改&quot;&gt;注释颜色更改&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#注释颜色更改&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;对了,我们还说一下这个破注释颜色怎么改(微软审美真的差,注释搞个这么难看的颜色)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192740545.webp&quot; alt=&quot;image-20260408192740545&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192822770.webp&quot; alt=&quot;image-20260408192822770&quot; style=&quot;zoom:33%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408192902259.webp&quot; alt=&quot;image-20260408192902259&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;壁纸添加&quot;&gt;壁纸添加&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#壁纸添加&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;对了,壁纸使用的插件ClaudiaIDE设置方式为,记住是dark主题&lt;/p&gt;
&lt;p&gt;然后对比我的设置(图片挑一张1920×1080大小以上的)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408194002846.webp&quot; alt=&quot;image-20260408194002846&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VisualStudio%E4%BF%9D%E5%AD%98%E4%B8%BAUTF-8%E6%96%B9%E6%B3%95/image-20260408194153299.webp&quot; alt=&quot;image-20260408194153299&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>VisualStudio</category></item><item><title>WPF---导航栏</title><link>https://huyangpahuo.vercel.app/posts/wpf-dao-hang-lan/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/wpf-dao-hang-lan/</guid><description>看到一个很好看的导航栏这里学一下</description><pubDate>Tue, 07 Apr 2026 19:39:35 GMT</pubDate><content:encoded>&lt;h1 id=&quot;之前是想制作一个给电脑一键切换dns的软件然后了解到了wpf&quot;&gt;之前是想制作一个给电脑一键切换DNS的软件,然后了解到了WPF&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#之前是想制作一个给电脑一键切换dns的软件然后了解到了wpf&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;然后刷视频的时候看到了这个&lt;a href=&quot;https://www.bilibili.com/video/BV1Ui4y1a717/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;哔站up&lt;/a&gt;的导航栏效果感觉很好看所以学了一下&lt;/p&gt;
&lt;p&gt;&lt;del&gt;结果是没学会&lt;/del&gt;&lt;/p&gt;
&lt;h2 id=&quot;配置wpf的环境&quot;&gt;配置WPF的环境&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置wpf的环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先配置好你的Visual Studio的.NET的配置,下载好这个东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407194646506.webp&quot; alt=&quot;image-20260407194646506&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;创建wpf项目&quot;&gt;创建WPF项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建wpf项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后创建项目&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407194821060.webp&quot; alt=&quot;image-20260407194821060&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407194902354.webp&quot; alt=&quot;image-20260407194902354&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;选择WPF自定义控件库(WpfCustomControlLibrary)&lt;/p&gt;
&lt;p&gt;然后创建项目,选择.NET 8.0(因为这个长期支持)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407202922591.webp&quot; alt=&quot;image-20260407202922591&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们先创建一个新的类(class)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407203144383.webp&quot; alt=&quot;image-20260407203144383&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后添加custom control&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407203316526.webp&quot; alt=&quot;image-20260407203316526&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;于是我们得到了这个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407203710259.webp&quot; alt=&quot;image-20260407203710259&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时会自动生成一个xaml文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407204147104.webp&quot; alt=&quot;image-20260407204147104&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们把这个generic.xaml改为&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;
  
    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Border Background=&quot;{TemplateBinding Background}&quot;
                            BorderBrush=&quot;{TemplateBinding BorderBrush}&quot;
                            BorderThickness=&quot;{TemplateBinding BorderThickness}&quot;&gt;
                        &amp;#x3C;Slider /&gt;   &amp;#x3C;!-- 添加一个侧滑条--&gt;
                    &amp;#x3C;/Border&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;由于这个无法运行,所以我们仍然需要添加一个项目------WPF应用程序(WPF Application)&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407204715508.webp&quot; alt=&quot;image-20260407204715508&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后就是和刚才一样,选.NET 8.0&lt;/p&gt;
&lt;p&gt;此时我们得到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407205052461.webp&quot; alt=&quot;image-20260407205052461&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们右键点击这个选择set as startup project(s设为启动项目)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407205400904.webp&quot; alt=&quot;image-20260407205400904&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们添加刚才的NavigationBar&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407205633965.webp&quot; alt=&quot;image-20260407205633965&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407205659268.webp&quot; alt=&quot;image-20260407205659268&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;添加完之后&lt;/p&gt;
&lt;p&gt;在MainWindow.xaml文件里修改并保存&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window x:Class=&quot;DemoApp.MainWindow&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
        xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
        xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
        xmlns:local=&quot;clr-namespace:DemoApp&quot;
        xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot; &amp;#x3C;!-- 添加地址--&gt;
        mc:Ignorable=&quot;d&quot;
        Title=&quot;MainWindow&quot; Height=&quot;450&quot; Width=&quot;800&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar/&gt;    &amp;#x3C;!-- 添加--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们运行&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407212034337.webp&quot; alt=&quot;image-20260407212034337&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;就得到我们刚才的slider(滑动条)&lt;/p&gt;
&lt;p&gt;然后我们就要去修改magicbar.cs里的代码&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Collections&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Generic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Linq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Threading&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Tasks&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Controls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Documents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Input&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Imaging&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Navigation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;NavigationBar&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MagicBar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token type-list&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;ListBox&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//ListBox 是一个核心控件，用于显示可滚动的项目列表，并允许用户进行单选或多选&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            DefaultStyleKeyProperty&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;OverrideMetadata&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token type-expression class-name&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token constructor-invocation class-name&quot;&gt;FrameworkPropertyMetadata&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token type-expression class-name&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在generic.xaml里修改&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;
    
    &amp;#x3C;!-- 增加Bar--&gt;
    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;!--Bar--&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们添加背景色&lt;/p&gt;
&lt;p&gt;MainWindow.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window x:Class=&quot;DemoApp.MainWindow&quot;
        xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
        xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
        xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
        xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
        xmlns:local=&quot;clr-namespace:DemoApp&quot;
        xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
        mc:Ignorable=&quot;d&quot;
        Background=&quot;#222222&quot; &amp;#x3C;!--  背景是黑色 --&gt;
        Title=&quot;MainWindow&quot; Height=&quot;450&quot; Width=&quot;800&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar/&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;generic.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;  &amp;#x3C;!--白色的条--&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Brown&quot; /&gt; &amp;#x3C;!--棕红色背景条--&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;  &amp;#x3C;!--添加--&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407220941784.webp&quot; alt=&quot;image-20260407220941784&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们增加一个圆(话说这个东西怎么和前端里的CSS那么像呢)&lt;/p&gt;
&lt;p&gt;修改generic.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;  &amp;#x3C;!--增加圆的样式--&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Brown&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas&gt;                                        &amp;#x3C;!--棕色球--&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Ellipse Fill=&quot;Brown&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407223750822.webp&quot; alt=&quot;image-20260407223750822&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在 &lt;code&gt;&amp;#x3C;Ellipse Fill=&quot;Brown&quot; /&gt;&lt;/code&gt;下面增加这一句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407224847380.webp&quot; alt=&quot;image-20260407224847380&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;使用blend&quot;&gt;使用Blend&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用blend&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;打开Blend,这个是Visual studio自带的东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407225154392.webp&quot; alt=&quot;image-20260407225154392&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在Blend中打开我们的项目,这个类似建模软件,只不过是可以代码驱动的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407225635844.webp&quot; alt=&quot;image-20260407225635844&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们将这个&amp;#x3C;navigation:Magicbar / &gt;注释掉  Visual studio中单行注释是ctrl +K  ctrl +C  取消注释是Ctrl +K ctrl +U&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407232521005.webp&quot; alt=&quot;image-20260407232521005&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;!--&amp;#x3C;navigation:MagicBar/&gt;--&gt;

        &amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Rectangle Margin=&quot;0,0,0,50&quot; Fill=&quot;Blue&quot; /&gt;
            &amp;#x3C;Rectangle Height=&quot;16&quot; Fill=&quot;Green&quot; /&gt;
            &amp;#x3C;Ellipse
                Width=&quot;81.97&quot;
                Height=&quot;81.97&quot;
                Fill=&quot;Black&quot; /&gt;
            &amp;#x3C;Ellipse
                Width=&quot;20&quot;
                Height=&quot;20&quot;
                Margin=&quot;-100,20,0,0&quot;
                Fill=&quot;Black&quot; /&gt;
            &amp;#x3C;Ellipse
                Width=&quot;20&quot;
                Height=&quot;20&quot;
                Margin=&quot;0,20,-100,0&quot;
                Fill=&quot;Black&quot; /&gt;
        &amp;#x3C;/Grid&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后按住Shift 在左边加选黑色的大圆和蓝色部分和绿色部分 然后右键 选择合并(combine)-&gt;相并(Unite)&lt;/p&gt;
&lt;p&gt;注意选中的顺序,先选蓝色这样结果才是蓝色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407233129215.webp&quot; alt=&quot;image-20260407233129215&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;得到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407234405466.webp&quot; alt=&quot;image-20260407234405466&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后选择选中右侧小黑圆和绿色区域,右键 选择合并(combine)-&gt;相减(Subtract)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407234642010.webp&quot; alt=&quot;image-20260407234642010&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;同理去除左侧的小黑圆&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407235044848.webp&quot; alt=&quot;image-20260407235044848&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时的布局里增加一个长方形re&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;!--&amp;#x3C;navigation:MagicBar/&gt;--&gt;

        &amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,0,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 100,42.006923 100,49.999999 C95.167503,49.999999 91.135627,53.427821 90.203163,57.984649 L90.152122,58.27045 89.96392,59.141677 C85.813438,77.384437 69.496498,90.999999 50,90.999999 30.5035,90.999999 14.186564,77.384437 10.036079,59.141677 L9.847882,58.270492 9.7968356,57.984649 C8.8643729,53.427821 4.8324916,49.999999 0,49.999999 L0,42.006923 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
            &amp;#x3C;Rectangle Margin=&quot;0,0,0,50&quot; Fill=&quot;blue&quot; /&gt;   &amp;#x3C;!--新增加蓝色矩形--&gt;
        &amp;#x3C;/Grid&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407235600406.webp&quot; alt=&quot;image-20260407235600406&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后选中右侧蓝色和绿色区域,右键 选择合并(combine)-&gt;相减(Subtract)&lt;/p&gt;
&lt;p&gt;得到一个好看的凹陷形状&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260407235653060.webp&quot; alt=&quot;image-20260407235653060&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;!--&amp;#x3C;navigation:MagicBar/&gt;--&gt;

        &amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path Fill=&quot;Green&quot; Margin=&quot;0,50,0,9&quot; Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot;/&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后把这个形状提取出来&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们在这个generic.xaml文件里使用这个&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;  &amp;#x3C;!-- 引入数据--&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;      &amp;#x3C;!--构造图形样式--&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;Yellow&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Brown&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Ellipse Fill=&quot;Brown&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后将刚才的MainWindow.xaml里的测试使用的代码注释掉或删掉&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar /&gt;

        &amp;#x3C;!--&amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,50,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是注意到,这个并不是很完美,有两个小角,而且圆的下面是平的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408130229733.webp&quot; alt=&quot;image-20260408130229733&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以我们添加一个修改&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408131120322.webp&quot; alt=&quot;image-20260408131120322&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;在generic.xaml里面更改这几个地方&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;  &amp;#x3C;!-- 将刚才的那个圆弧形状改成黑色--&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;  &amp;#x3C;!--改margin值抬高这个圆弧防止出现平底--&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;   &amp;#x3C;!--将背景条改成透明--&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;  &amp;#x3C;!--改一下margin值显示出左边被盖住的部分--&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;   &amp;#x3C;!--将这个移动到上面 --&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们增加一个东西&lt;/p&gt;
&lt;p&gt;generic.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter /&gt;  &amp;#x3C;!-- 把刚才的12345添加进去--&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;MainWindow.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar&gt;  &amp;#x3C;!-- 增加12345--&gt;
            &amp;#x3C;ListBoxItem Content=&quot;1&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;2&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;3&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;4&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;5&quot; /&gt;

        &amp;#x3C;/navigation:MagicBar&gt;

        &amp;#x3C;!--&amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,50,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408140109477.webp&quot; alt=&quot;image-20260408140109477&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后改一下位置&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;  &amp;#x3C;!--marin大小--&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;   &amp;#x3C;!--分成5个--&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408142742632.webp&quot; alt=&quot;image-20260408142742632&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后修改generic.xaml&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;  &amp;#x3C;!--5个盒子的样式 --&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;TextBlock Text=&quot;{TemplateBinding Content}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后添加名字&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Microsoft&quot; /&gt;  &amp;#x3C;!-- 更换数字为软件名字--&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Apple&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Google&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Facebook&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Instagram&quot; /&gt;

        &amp;#x3C;/navigation:MagicBar&gt;

        &amp;#x3C;!--&amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,50,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;获取ui库&quot;&gt;获取UI库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#获取ui库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后我们获取UI库------Jamesnet.Wpf NugetPackage&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408143829338.webp&quot; alt=&quot;image-20260408143829338&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408164344033.webp&quot; alt=&quot;image-20260408164344033&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408164517981.webp&quot; alt=&quot;image-20260408164517981&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;下载完成后我可以在这里找到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408164636284.webp&quot; alt=&quot;image-20260408164636284&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们在开头引用链接地址,先用微软的logo试一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408170655308.webp&quot; alt=&quot;image-20260408170655308&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到微软的方块已经出现了&lt;/p&gt;
&lt;p&gt;此时我们把这个修改一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;


    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon Icon=&quot;{TemplateBinding Tag}&quot; /&gt;   &amp;#x3C;!--这里我们把这个换成可替换的元素--&gt;
                        &amp;#x3C;TextBlock Text=&quot;{TemplateBinding Content}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408171626774.webp&quot; alt=&quot;image-20260408171626774&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后修改MainWindow.xaml里的代码,即在原有的软件的名称的位置加上logo&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;   &amp;#x3C;!--和刚才一样先医用james的链接--&gt;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;        &amp;#x3C;!--然后在对相应的软件的名字下放入对应的logo--&gt;
        &amp;#x3C;navigation:MagicBar&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Microsoft&quot; Tag=&quot;{x:Static james:IconType.Microsoft}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Apple&quot; Tag=&quot;{x:Static james:IconType.Apple}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Google&quot; Tag=&quot;{x:Static james:IconType.Google}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Facebook&quot; Tag=&quot;{x:Static james:IconType.Facebook}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Instagram&quot; Tag=&quot;{x:Static james:IconType.Instagram}&quot; /&gt;
        &amp;#x3C;/navigation:MagicBar&gt;

        &amp;#x3C;!--&amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,50,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后我们把这个logo的颜色变淡一点&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408172638102.webp&quot; alt=&quot;image-20260408172638102&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;  &amp;#x3C;!--这里 --&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon Icon=&quot;{TemplateBinding Tag}&quot; /&gt; &amp;#x3C;!--把刚才的部分去掉,放到style里面--&gt;
                        &amp;#x3C;TextBlock Text=&quot;{TemplateBinding Content}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后怎么再将文字字体加粗和居中&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;  &amp;#x3C;!--这里设置字体的位置样式--&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon Icon=&quot;{TemplateBinding Tag}&quot; /&gt;
                        &amp;#x3C;TextBlock Style=&quot;{StaticResource Name}&quot; Text=&quot;{TemplateBinding Content}&quot; /&gt;&amp;#x3C;!--包括这里的字体也增加一个style--&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样的模仿刚才的Icon 这里name里的Text=&quot;{TemplateBinding Content}&quot; 也可以移动到style里&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;  &amp;#x3C;!--和上面的保持一致--&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon Icon=&quot;{TemplateBinding Tag}&quot; /&gt;
                        &amp;#x3C;TextBlock Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408173846037.webp&quot; alt=&quot;image-20260408173846037&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时雏形已经出来了&lt;/p&gt;
&lt;h2 id=&quot;动画部分&quot;&gt;动画部分&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#动画部分&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这里需要修改两个部分,修改完点击启动然后点击logo会看到logo往上飘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20260408183247217.webp&quot; alt=&quot;image-20260408183247217&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;

    &amp;#x3C;Storyboard x:Key=&quot;Selected&quot;&gt;   &amp;#x3C;!-- logo上移--&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 -80 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon x:Name=&quot;icon&quot; Icon=&quot;{TemplateBinding Tag}&quot; /&gt;  &amp;#x3C;!-- 引入icon目标移动位置--&gt;
                        &amp;#x3C;TextBlock Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    &amp;#x3C;ControlTemplate.Triggers&gt;
                        &amp;#x3C;Trigger Property=&quot;IsSelected&quot; Value=&quot;True&quot;&gt;
                            &amp;#x3C;Trigger.EnterActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource Selected}&quot; /&gt;
                            &amp;#x3C;/Trigger.EnterActions&gt;
                        &amp;#x3C;/Trigger&gt;
                    &amp;#x3C;/ControlTemplate.Triggers&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;此时我们还需要logo往下移动的动画&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;



    &amp;#x3C;Storyboard x:Key=&quot;Selected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 -80 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Storyboard x:Key=&quot;UnSelected&quot;&gt;  &amp;#x3C;!--logo下移--&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 0 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid&gt;
                        &amp;#x3C;james:JamesIcon x:Name=&quot;icon&quot; Icon=&quot;{TemplateBinding Tag}&quot; /&gt;
                        &amp;#x3C;TextBlock Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    &amp;#x3C;ControlTemplate.Triggers&gt;
                        &amp;#x3C;Trigger Property=&quot;IsSelected&quot; Value=&quot;True&quot;&gt;
                            &amp;#x3C;Trigger.EnterActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource Selected}&quot; /&gt;
                            &amp;#x3C;/Trigger.EnterActions&gt;
                            &amp;#x3C;Trigger.ExitActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource UnSelected}&quot; /&gt;  &amp;#x3C;!--增加下移--&gt;
                            &amp;#x3C;/Trigger.ExitActions&gt;
                        &amp;#x3C;/Trigger&gt;
                    &amp;#x3C;/ControlTemplate.Triggers&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是可以发现点击logo空白区域没有反应,所以还要更改一个地方&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;


    &amp;#x3C;Storyboard x:Key=&quot;Selected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 -80 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Storyboard x:Key=&quot;UnSelected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 0 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;   &amp;#x3C;!--盒子改透明--&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;  &amp;#x3C;!--绑定背景盒子--&gt;
                        &amp;#x3C;james:JamesIcon x:Name=&quot;icon&quot; Icon=&quot;{TemplateBinding Tag}&quot; /&gt;
                        &amp;#x3C;TextBlock Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    &amp;#x3C;ControlTemplate.Triggers&gt;
                        &amp;#x3C;Trigger Property=&quot;IsSelected&quot; Value=&quot;True&quot;&gt;
                            &amp;#x3C;Trigger.EnterActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource Selected}&quot; /&gt;
                            &amp;#x3C;/Trigger.EnterActions&gt;
                            &amp;#x3C;Trigger.ExitActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource UnSelected}&quot; /&gt;
                            &amp;#x3C;/Trigger.ExitActions&gt;
                        &amp;#x3C;/Trigger&gt;
                    &amp;#x3C;/ControlTemplate.Triggers&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这样无论点击盒子的哪个地方都会让logo动起来&lt;/p&gt;
&lt;p&gt;然后实现隐藏文字效果和字体颜色渐变&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;


    &amp;#x3C;Storyboard x:Key=&quot;Selected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 -80 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;     &amp;#x3C;!-- 增加文字的移动和颜色渐变--&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;    
            TargetName=&quot;name&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 45 0 0&quot;            
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Fill.Color&quot;
            To=&quot;#333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Foreground.Color&quot;
            To=&quot;#333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;

    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Storyboard x:Key=&quot;UnSelected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 0 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 60 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;    &amp;#x3C;!-- 增加文字的移动和颜色渐变--&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Fill.Color&quot;
            To=&quot;#44333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Foreground.Color&quot;
            To=&quot;#00000000&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;

    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Foreground&quot; Value=&quot;#00000000&quot; /&gt;   &amp;#x3C;!--颜色透明--&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;FocusVisualStyle&quot; Value=&quot;{x:Null}&quot; /&gt;  &amp;#x3C;!-- 去除虚线小方框--&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;james:JamesIcon x:Name=&quot;icon&quot; Style=&quot;{StaticResource Icon}&quot; /&gt; &amp;#x3C;!--把logo变大--&gt;
                        &amp;#x3C;TextBlock x:Name=&quot;name&quot; Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    &amp;#x3C;ControlTemplate.Triggers&gt;
                        &amp;#x3C;Trigger Property=&quot;IsSelected&quot; Value=&quot;True&quot;&gt;
                            &amp;#x3C;Trigger.EnterActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource Selected}&quot; /&gt;
                            &amp;#x3C;/Trigger.EnterActions&gt;
                            &amp;#x3C;Trigger.ExitActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource UnSelected}&quot; /&gt;
                            &amp;#x3C;/Trigger.ExitActions&gt;
                        &amp;#x3C;/Trigger&gt;
                    &amp;#x3C;/ControlTemplate.Triggers&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;最终结果&quot;&gt;最终结果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#最终结果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/WPF/WPF---%E5%AF%BC%E8%88%AA%E6%A0%8F/image-20261005224308741.webp&quot; alt=&quot;image-20261005224308741&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;genericxaml&quot;&gt;generic.xaml&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#genericxaml&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;ResourceDictionary
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:NavigationBar&quot;&gt;


    &amp;#x3C;Storyboard x:Key=&quot;Selected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 -80 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 45 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Fill.Color&quot;
            To=&quot;#333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Foreground.Color&quot;
            To=&quot;#333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Storyboard x:Key=&quot;UnSelected&quot;&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 0 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ThickItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Margin&quot;
            To=&quot;0 60 0 0&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;icon&quot;
            Property=&quot;Fill.Color&quot;
            To=&quot;#44333333&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
        &amp;#x3C;james:ColorItem
            Mode=&quot;CubicEaseInOut&quot;
            TargetName=&quot;name&quot;
            Property=&quot;Foreground.Color&quot;
            To=&quot;#00000000&quot;
            Duration=&quot;0:0:0.5&quot; /&gt;
    &amp;#x3C;/Storyboard&gt;

    &amp;#x3C;Style x:Key=&quot;Icon&quot; TargetType=&quot;{x:Type james:JamesIcon}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Icon&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Tag}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;40&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#44333333&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Name&quot; TargetType=&quot;{x:Type TextBlock}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Text&quot; Value=&quot;{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Content}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;HorizontalAlignment&quot; Value=&quot;Center&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontWeight&quot; Value=&quot;Bold&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;FontSize&quot; Value=&quot;14&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,60,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Foreground&quot; Value=&quot;#00000000&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;MagicBarItem&quot; TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;FocusVisualStyle&quot; Value=&quot;{x:Null}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type ListBoxItem}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;james:JamesIcon x:Name=&quot;icon&quot; Style=&quot;{StaticResource Icon}&quot; /&gt;
                        &amp;#x3C;TextBlock x:Name=&quot;name&quot; Style=&quot;{StaticResource Name}&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                    &amp;#x3C;ControlTemplate.Triggers&gt;
                        &amp;#x3C;Trigger Property=&quot;IsSelected&quot; Value=&quot;True&quot;&gt;
                            &amp;#x3C;Trigger.EnterActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource Selected}&quot; /&gt;
                            &amp;#x3C;/Trigger.EnterActions&gt;
                            &amp;#x3C;Trigger.ExitActions&gt;
                                &amp;#x3C;BeginStoryboard Storyboard=&quot;{StaticResource UnSelected}&quot; /&gt;
                            &amp;#x3C;/Trigger.ExitActions&gt;
                        &amp;#x3C;/Trigger&gt;
                    &amp;#x3C;/ControlTemplate.Triggers&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Geometry x:Key=&quot;ArcData&quot;&gt;
        M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z
    &amp;#x3C;/Geometry&gt;

    &amp;#x3C;Style x:Key=&quot;Arc&quot; TargetType=&quot;{x:Type Path}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Data&quot; Value=&quot;{StaticResource ArcData}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;100&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Fill&quot; Value=&quot;#222222&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;-10,40,-10,-1&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Bar&quot; TargetType=&quot;{x:Type Border}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;#DDDDDD&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Margin&quot; Value=&quot;0,40,0,0&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;CornerRadius&quot; Value=&quot;10&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style x:Key=&quot;Circle&quot; TargetType=&quot;{x:Type Grid}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;80&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Canvas.Left&quot; Value=&quot;-100&quot; /&gt;
    &amp;#x3C;/Style&gt;

    &amp;#x3C;Style TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
        &amp;#x3C;Setter Property=&quot;ItemContainerStyle&quot; Value=&quot;{StaticResource MagicBarItem}&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;SnapsToDevicePixels&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;UseLayoutRounding&quot; Value=&quot;True&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Background&quot; Value=&quot;Transparent&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Width&quot; Value=&quot;440&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Height&quot; Value=&quot;120&quot; /&gt;
        &amp;#x3C;Setter Property=&quot;Template&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ControlTemplate TargetType=&quot;{x:Type local:MagicBar}&quot;&gt;
                    &amp;#x3C;Grid Background=&quot;{TemplateBinding Background}&quot;&gt;
                        &amp;#x3C;Grid.Clip&gt;
                            &amp;#x3C;RectangleGeometry Rect=&quot;0 0 440 120&quot; /&gt;
                        &amp;#x3C;/Grid.Clip&gt;
                        &amp;#x3C;Border Style=&quot;{StaticResource Bar}&quot; /&gt;
                        &amp;#x3C;Canvas Margin=&quot;20,0,20,0&quot;&gt;
                            &amp;#x3C;Grid x:Name=&quot;PART_Circle&quot; Style=&quot;{StaticResource Circle}&quot;&gt;
                                &amp;#x3C;Path Style=&quot;{StaticResource Arc}&quot; /&gt;
                                &amp;#x3C;Ellipse Fill=&quot;#222222&quot; /&gt;
                                &amp;#x3C;Ellipse Margin=&quot;6&quot; Fill=&quot;CadetBlue&quot; /&gt;
                            &amp;#x3C;/Grid&gt;
                        &amp;#x3C;/Canvas&gt;
                        &amp;#x3C;ItemsPresenter Margin=&quot;20,40,20,0&quot; /&gt;
                    &amp;#x3C;/Grid&gt;
                &amp;#x3C;/ControlTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
        &amp;#x3C;Setter Property=&quot;ItemsPanel&quot;&gt;
            &amp;#x3C;Setter.Value&gt;
                &amp;#x3C;ItemsPanelTemplate&gt;
                    &amp;#x3C;UniformGrid Columns=&quot;5&quot; /&gt;
                &amp;#x3C;/ItemsPanelTemplate&gt;
            &amp;#x3C;/Setter.Value&gt;
        &amp;#x3C;/Setter&gt;
    &amp;#x3C;/Style&gt;
&amp;#x3C;/ResourceDictionary&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;mainwindowxaml&quot;&gt;mainWindow.xaml&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mainwindowxaml&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;xaml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&amp;#x3C;Window
    x:Class=&quot;DemoApp.MainWindow&quot;
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
    xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
    xmlns:james=&quot;https://jamesnet.dev/xaml/presentation&quot;
    xmlns:local=&quot;clr-namespace:DemoApp&quot;
    xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
    xmlns:navigation=&quot;clr-namespace:NavigationBar;assembly=NavigationBar&quot;
    Title=&quot;MainWindow&quot;
    Width=&quot;800&quot;
    Height=&quot;450&quot;
    Background=&quot;#222222&quot;
    mc:Ignorable=&quot;d&quot;&gt;
    &amp;#x3C;Grid&gt;
        &amp;#x3C;navigation:MagicBar x:Name=&quot;bar&quot;&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Microsoft&quot; Tag=&quot;{x:Static james:IconType.Microsoft}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Apple&quot; Tag=&quot;{x:Static james:IconType.Apple}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Google&quot; Tag=&quot;{x:Static james:IconType.Google}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Facebook&quot; Tag=&quot;{x:Static james:IconType.Facebook}&quot; /&gt;
            &amp;#x3C;ListBoxItem Content=&quot;Instagram&quot; Tag=&quot;{x:Static james:IconType.Instagram}&quot; /&gt;
        &amp;#x3C;/navigation:MagicBar&gt;

        &amp;#x3C;!--&amp;#x3C;Grid
            Width=&quot;100&quot;
            Height=&quot;100&quot;
            Background=&quot;Silver&quot;&gt;
            &amp;#x3C;Path
                Margin=&quot;0,50,0,9&quot;
                Fill=&quot;Green&quot;
                Stretch=&quot;Fill&quot;&gt;
                &amp;#x3C;Path.Data&gt;
                    &amp;#x3C;PathGeometry Figures=&quot;M0,0 L100,0 C95.167503,0 91.135628,3.4278221 90.203163,7.9846497 L90.152122,8.2704506 89.963921,9.1416779 C85.813438,27.384438 69.496498,41 50,41 30.5035,41 14.186564,27.384438 10.036079,9.1416779 L9.8478823,8.2704926 9.7968359,7.9846497 C8.8643732,3.4278221 4.8324914,0 0,0 z&quot; /&gt;
                &amp;#x3C;/Path.Data&gt;
            &amp;#x3C;/Path&gt;
        &amp;#x3C;/Grid&gt;--&gt;
    &amp;#x3C;/Grid&gt;
&amp;#x3C;/Window&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;mainwindowxamlcs&quot;&gt;mainWindow.xaml.cs&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mainwindowxamlcs&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Controls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Documents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Input&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Imaging&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Navigation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;DemoApp&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;/// &amp;#x3C;summary&gt;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;/// Interaction logic for MainWindow.xaml&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;/// &amp;#x3C;/summary&gt;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;partial&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MainWindow&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token type-list&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;Window&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainWindow&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;InitializeComponent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            Loaded &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; MainWindow_Loaded&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MainWindow_Loaded&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;object&lt;/span&gt;&lt;/span&gt; sender&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;RoutedEventArgs&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            bar&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;SelectedIndex &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;magicbarcs&quot;&gt;magicbar.cs&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#magicbarcs&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;Jamesnet&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Wpf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Animation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;Jamesnet&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Wpf&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Controls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Collections&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Generic&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Linq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Text&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Threading&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Tasks&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Controls&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Data&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Documents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Input&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Animation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Media&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Imaging&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Navigation&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;using&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Windows&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Shapes&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;token namespace&quot;&gt;NavigationBar&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   
    &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;MagicBar&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token type-list&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;ListBox&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//ListBox 是一个核心控件，用于显示可滚动的项目列表，并允许用户进行单选或多选&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;ValueItem&lt;/span&gt; _vi&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Storyboard&lt;/span&gt; _sb &lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            DefaultStyleKeyProperty&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;OverrideMetadata&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token type-expression class-name&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token constructor-invocation class-name&quot;&gt;FrameworkPropertyMetadata&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;typeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token type-expression class-name&quot;&gt;MagicBar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;OnApplyTemplate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;base&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;OnApplyTemplate&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token class-name&quot;&gt;Grid&lt;/span&gt; circle &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Grid&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;GetTemplateChild&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;PART_Circle&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;InitStoryboard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;circle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;InitStoryboard&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Grid&lt;/span&gt; circle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            _vi &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            _sb &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            _vi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Mode &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; EasingFunctionBaseMode&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;QuinticEaseInOut&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            _vi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Property &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token constructor-invocation class-name&quot;&gt;PropertyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Canvas&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;LeftProperty&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            &lt;span class=&quot;token comment&quot;&gt;// 使用 TimeSpan.FromMilliseconds 修复动画时长为 500 毫秒&lt;/span&gt;
            _vi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Duration &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;token constructor-invocation class-name&quot;&gt;Duration&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;TimeSpan&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;FromMilliseconds&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;//这个地方是之前写的一个bug,应该使用TimeSpan.FromMilliseconds()来计算&lt;/span&gt;

            Storyboard&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetTarget&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_vi&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; circle&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            Storyboard&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;SetTargetProperty&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_vi&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; _vi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Property&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            _sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Children&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;_vi&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;token return-type class-name&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;OnSelectionChanged&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;SelectionChangedEventArgs&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;base&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;OnSelectionChanged&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

            _vi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;To &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; SelectedIndex &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            _sb&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Begin&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>WPF</category><category>WPF</category></item><item><title>尝试Linux的几个知名发行版</title><link>https://huyangpahuo.vercel.app/posts/chang-shi-linux-de-ji-ge-zhi-ming-fa-xing-ban/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/chang-shi-linux-de-ji-ge-zhi-ming-fa-xing-ban/</guid><description>尝试Linux的几个知名发行版比如ubuntu和kali</description><pubDate>Mon, 06 Apr 2026 20:14:03 GMT</pubDate><content:encoded>&lt;h1 id=&quot;对比一下几个linux的样子&quot;&gt;对比一下几个linux的样子&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对比一下几个linux的样子&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;不过大多数linux用的都是KDE和GNOME主题&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406201716638.webp&quot; alt=&quot;image-20260406201716638&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我都试了一下,debian我也试了一下,和centos啥都没有,就是一个壳子,懒得配置,然后我又删了&lt;/p&gt;
&lt;p&gt;果然这玩意只适合作为服务器&lt;/p&gt;
&lt;h2 id=&quot;kali&quot;&gt;Kali&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#kali&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406202206732.webp&quot; alt=&quot;image-20260406202206732&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个我下载之后没什么用但是又舍不得删(因为配置巨复杂),况且是虚拟机没什么能耐,不过UI挺好看的,可惜本质上是渗透工具&lt;/p&gt;
&lt;h2 id=&quot;ubuntu&quot;&gt;Ubuntu&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ubuntu&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406202508035.webp&quot; alt=&quot;image-20260406202508035&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;这个就不用说了吧,开发者最在乎Debian ubuntu和Arch了&lt;/p&gt;
&lt;h2 id=&quot;nyarch&quot;&gt;Nyarch&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#nyarch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406202806811.webp&quot; alt=&quot;image-20260406202806811&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;h2 id=&quot;centos-stream&quot;&gt;CentOS stream&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#centos-stream&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;centos7非常老,操作起来很恶心,而这个是新版本&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406203140316.webp&quot; alt=&quot;image-20260406203140316&quot; style=&quot;zoom: 67%;&quot;&gt;
&lt;h2 id=&quot;linuxmint&quot;&gt;Linuxmint&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#linuxmint&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406203310281.webp&quot; alt=&quot;image-20260406203310281&quot; style=&quot;zoom:67%;&quot;&gt;
&lt;h2 id=&quot;manjaro&quot;&gt;Manjaro&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#manjaro&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406203600340.webp&quot; alt=&quot;image-20260406203600340&quot; style=&quot;zoom:67%;&quot;&gt;
&lt;h2 id=&quot;fedora&quot;&gt;Fedora&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#fedora&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406203724513.webp&quot; alt=&quot;image-20260406203724513&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;deepin最像windows&quot;&gt;Deepin(最像Windows)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#deepin最像windows&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406203856084.webp&quot; alt=&quot;image-20260406203856084&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;h2 id=&quot;rocky&quot;&gt;Rocky&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#rocky&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406204002022.webp&quot; alt=&quot;image-20260406204002022&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;h2 id=&quot;popos&quot;&gt;Pop!OS&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#popos&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406204220188.webp&quot; alt=&quot;image-20260406204220188&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;h2 id=&quot;zorinos&quot;&gt;ZorinOS&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#zorinos&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406204508161.webp&quot; alt=&quot;image-20260406204508161&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;endeavouros&quot;&gt;EndeavourOS&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#endeavouros&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406204635398.webp&quot; alt=&quot;image-20260406204635398&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;alma&quot;&gt;Alma&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#alma&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406204814528.webp&quot; alt=&quot;image-20260406204814528&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;说实话,都差不多&lt;/p&gt;
&lt;p&gt;这些linux还喜欢搞什么排名&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406211238632.webp&quot; alt=&quot;image-20260406211238632&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406211317883.webp&quot; alt=&quot;image-20260406211317883&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406211405040.webp&quot; alt=&quot;image-20260406211405040&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/%E5%B0%9D%E8%AF%95Linux%E7%9A%84%E5%87%A0%E4%B8%AA%E7%9F%A5%E5%90%8D%E5%8F%91%E8%A1%8C%E7%89%88/image-20260406211442854.webp&quot; alt=&quot;image-20260406211442854&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Linux</category><category>Linux</category><category>日记</category></item><item><title>重装windows11系统过程</title><link>https://huyangpahuo.vercel.app/posts/zhong-zhuang-windows11-xi-tong-guo-cheng/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/zhong-zhuang-windows11-xi-tong-guo-cheng/</guid><description>使用网上的激活码被坑了。。。</description><pubDate>Mon, 30 Mar 2026 14:22:59 GMT</pubDate><content:encoded>&lt;h2 id=&quot;使用了网上的windows专业版激活码没想到被坑了woc这个世界怎么这么坏啊&quot;&gt;使用了网上的Windows专业版激活码,没想到被坑了.....woc这个世界怎么这么坏啊&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用了网上的windows专业版激活码没想到被坑了woc这个世界怎么这么坏啊&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;也算是吃一堑长一智,还好被坑的不止我一个,至少还有救&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330151601278.webp&quot; alt=&quot;image-20260330151601278&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;因为家庭版可以升级成企业版,反之则不可以(这一点真的坑),激活码可以用,但是只允许一台电脑使用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330150250203.webp&quot; alt=&quot;image-20260330150250203&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;否则就会有水印,而且没激活就等于不能正常使用(用倒是能用)&lt;/p&gt;
&lt;p&gt;此时电脑会处于这个尴尬境地-----家庭版被覆盖用不了,专业版没激活不能用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;这个&lt;a href=&quot;https://www.bilibili.com/video/BV1fETBzuE52?vd_source=8b64ea52b2b8f7ddafd25b28360cd6c0&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;视频&lt;/a&gt;请逐帧观看⚠️,尤其是视频提到软件选项选择的片段,千万不要选错了  千万不要选错了 千万不要选错了!!!&lt;/p&gt;
&lt;p&gt;只要错了,磁盘里的一切归零,电脑恢复出厂设置&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;好了,经过5个多小时的漫长下载和重启,我们恢复了电脑系统&lt;/p&gt;
&lt;p&gt;由于序列号和电脑主板绑定,所以回退到家庭版会自动激活,不用担心&lt;/p&gt;
&lt;p&gt;这里如果家庭版没有显示激活的话,点击&lt;font color=&quot;#87CEFA&quot;&gt;疑难解答&lt;/font&gt;按钮,就会弹出一个窗口,选择&lt;font color=&quot;#87CEFA&quot;&gt;Windows激活&lt;/font&gt;即可完成激活&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330184645965.webp&quot; alt=&quot;image-20260330184645965&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时C盘会变红,因为电脑自动备份了数据到磁盘里&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330185230676.webp&quot; alt=&quot;image-20260330185230676&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;就是这个文件夹&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330185311448.webp&quot; alt=&quot;image-20260330185311448&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;你可以选择删除,也可以选择让电脑几天后自己自动清除,不过还是说说怎么删除吧&lt;/p&gt;
&lt;p&gt;搜素&lt;font color=&quot;#40E0D0&quot;&gt;磁盘清理&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330194807544.webp&quot; alt=&quot;image-20260330194807544&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择C盘&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330194914172.webp&quot; alt=&quot;image-20260330194914172&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330194946930.webp&quot; alt=&quot;image-20260330194946930&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;勾选“&lt;font color=&quot;#FF1493&quot;&gt;以前的Windows安装&lt;/font&gt;”选项删除即可&lt;/p&gt;
&lt;p&gt;然后重启一下电脑&lt;/p&gt;
&lt;p&gt;当当当当!&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E9%87%8D%E8%A3%85windows11%E7%B3%BB%E7%BB%9F%E8%BF%87%E7%A8%8B/image-20260330194737529.webp&quot; alt=&quot;image-20260330194737529&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;以后可不要贪小便宜乱使用陌生的windows激活码了&quot;&gt;以后可不要贪小便宜乱使用陌生的Windows激活码了&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#以后可不要贪小便宜乱使用陌生的windows激活码了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;而且企业版和家庭版没有什么区别,无非就是多了个虚拟机和一些用不到的功能&lt;/p&gt;
&lt;p&gt;对了,不要忘记更新一下自己的Windows系统,因为我们下载的并不是最新版本的,只是一个稳定的老版本&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Windows</category></item><item><title>Windows终端美化</title><link>https://huyangpahuo.vercel.app/posts/windows-zhong-duan-mei-hua/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/windows-zhong-duan-mei-hua/</guid><description>本篇使用oh my posh美化powershell终端</description><pubDate>Sun, 29 Mar 2026 23:20:43 GMT</pubDate><content:encoded>&lt;h1 id=&quot;关于windows的powershell黑屏感觉很难看所以专门美化了一下&quot;&gt;关于Windows的powershell黑屏感觉很难看,所以专门美化了一下&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关于windows的powershell黑屏感觉很难看所以专门美化了一下&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;不过还有其他更美观的方法,比如在终端塞一个ascII二次元娘和系统配置啥的&lt;/p&gt;
&lt;h2 id=&quot;下载软件&quot;&gt;下载软件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载软件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;去微软商店搜&lt;code&gt;Windows Terminal&lt;/code&gt;和&lt;code&gt;oh-my-posh&lt;/code&gt;下载和更新比较方便&lt;/p&gt;
&lt;h3 id=&quot;下载windows-terminal&quot;&gt;下载Windows Terminal&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载windows-terminal&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;也可以通过widget安装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 下载&lt;/span&gt;
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id Microsoft&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WindowsTerminal &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;exact

&lt;span class=&quot;token comment&quot;&gt;# 更新&lt;/span&gt;
winget upgrade &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id Microsoft&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;WindowsTerminal &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;exact
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中Windows Terminal是可以统一管理多种命令行环境的窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261009233344172.webp&quot; alt=&quot;image-20261009233344172&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以自定义添加一些终端预设例如git bash&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261010104814528.webp&quot; alt=&quot;image-20261010104814528&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;也可以通过widget安装oh my posh,默认主题是&lt;code&gt;JanDeDobbeleer&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 下载&lt;/span&gt;
winget install JanDeDobbeleer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;OhMyPosh &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;source winget

&lt;span class=&quot;token comment&quot;&gt;# 更新&lt;/span&gt;
winget upgrade JanDeDobbeleer&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;OhMyPosh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;下载cascadia-code-nf字体&quot;&gt;下载Cascadia Code NF字体&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载cascadia-code-nf字体&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/microsoft/cascadia-code&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;点击前往Github下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择这个&lt;strong&gt;Cascadia Code NF&lt;/strong&gt;字体安装到系统字体&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260329233050980.webp&quot; alt=&quot;image-20260329233050980&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;当然你也可以去&lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Nerd Font官网&lt;/a&gt;下载其他你喜欢的 Nerd Font 字体&lt;/p&gt;
&lt;h3 id=&quot;下载powershell-7&quot;&gt;下载powershell 7&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载powershell-7&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 安裝&lt;/span&gt;
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id Microsoft&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Powershell &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;source winget

&lt;span class=&quot;token comment&quot;&gt;# 更新&lt;/span&gt;
winget upgrade &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id Microsoft&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Powershell
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261009235358106.webp&quot; alt=&quot;image-20261009235358106&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;也可以把这个作为Windows默认终端&lt;/p&gt;
&lt;p&gt;或者我们用默认的5.1 ,然后通过&lt;code&gt;pwsh&lt;/code&gt;打开7&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;powershell命令启动的是5.1&lt;/li&gt;
&lt;li&gt;pwsh命令启动的是7+&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261012085409422.webp&quot; alt=&quot;image-20261012085409422&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;移除终端欢迎语&quot;&gt;移除终端欢迎语&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#移除终端欢迎语&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;默认的powershell有&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Windows PowerShell&lt;br&gt;
Copyright (C) Microsoft Corporation. All rights reserved.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这句话,不喜欢的话可以使用&lt;code&gt;-nologo&lt;/code&gt;参数移除&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261012091748430.webp&quot; alt=&quot;image-20261012091748430&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261012091822337.webp&quot; alt=&quot;image-20261012091822337&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;gsudo获得管理员权限&quot;&gt;gsudo获得管理员权限&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#gsudo获得管理员权限&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;通常我们需要这样获得管理员权限&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261012092728248.webp&quot; alt=&quot;image-20261012092728248&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 安裝&lt;/span&gt;
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id gerardog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gsudo &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;source winget

&lt;span class=&quot;token comment&quot;&gt;# 更新&lt;/span&gt;
winget upgrade &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id gerardog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gsudo &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;source winget
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;若你习惯liunx的sudo也可以配置别名&lt;/p&gt;
&lt;p&gt;在powershell执行如下命令在配置文件添加&lt;code&gt;Set-Alias sudo gsudo&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 判断是否有profile配置没有就创建&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Test-Path&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;New-Item&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ItemType File &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Out-Null&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 在里面添加Set-Alias sudo gsudo&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Select-String&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Pattern &lt;span class=&quot;token string&quot;&gt;&apos;Set-Alias sudo gsudo&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Quiet&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;Add-Content&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Value &lt;span class=&quot;token string&quot;&gt;&quot;`nSet-Alias sudo gsudo&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 查看配置文件路径&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;配置终端外观&quot;&gt;配置终端外观&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置终端外观&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们可以在json文件设置主题,这里使用德古拉吸血鬼主题配色&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260329232656983.webp&quot; alt=&quot;image-20260329232656983&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;打开json后找到并更改两个地方&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//第一个地方&lt;/span&gt;
&lt;span class=&quot;token property&quot;&gt;&quot;profiles&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;defaults&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;font&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;face&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Cascadia Code NF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 必须是你刚才安装的 Nerd Font 字体名&lt;/span&gt;
        &lt;span class=&quot;token property&quot;&gt;&quot;size&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;useAcrylic&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;// 开启毛玻璃半透明效果&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;acrylicOpacity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.85&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;// 整体窗口的透明度&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;colorScheme&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Dracula&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// 使用经典的吸血鬼深色主题&lt;/span&gt;
      
      &lt;span class=&quot;token comment&quot;&gt;// --- 背景图片设置（进阶） ---&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;backgroundImage&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\\HuaweiMoveData\\Users\\39300\\Pictures\\高清壁纸\\01.png&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 壁纸路径（注意用双斜杠 \\）&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;backgroundImageOpacity&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0.2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;// 壁纸透明度（调低点以免看不清代码）&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;backgroundImageStretchMode&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;uniformToFill&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;backgroundImageAlignment&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;center&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// ... &quot;list&quot;: [...] 保留原样&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;



&lt;span class=&quot;token comment&quot;&gt;//第二个地方&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;schemes&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Dracula&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;background&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#282A36&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;foreground&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#F8F8F2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;cursorColor&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#F8F8F2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;selectionBackground&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#44475A&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;black&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#21222C&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightBlack&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#6272A4&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;blue&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#BD93F9&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightBlue&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#D6ACFF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;cyan&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#8BE9FD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightCyan&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#A4FFFF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;green&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#50FA7B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightGreen&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#69FF94&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;purple&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FF79C6&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightPurple&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FF92DF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;red&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FF5555&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightRed&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FF6E6E&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;white&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#F8F8F2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightWhite&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FFFFFF&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;yellow&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#F1FA8C&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token property&quot;&gt;&quot;brightYellow&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#FFFFA5&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;注意json的格式正确,壁纸请替换成实际图片路径&lt;/p&gt;
&lt;p&gt;觉得麻烦和怕出错的话还可以自己在这里配置方案,然后调整参数&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20261009224631372.webp&quot; alt=&quot;image-20261009224631372&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后完成后退出重启终端,就可以看到界面变成这个样子&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260329233559296.webp&quot; alt=&quot;image-20260329233559296&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	不过还不够,需要在powershell中启用oh my posh的主题(只能powershell,不能cmd)&lt;/p&gt;
&lt;h2 id=&quot;powershell区分版本&quot;&gt;powershell区分版本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powershell区分版本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;powershell终端输入打开终端配置文件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 查看目前使用的 Profile 路径&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 检测配置文件是否存在（True = 已存在）&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Test-Path&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 打开并编辑此文件&lt;/span&gt;
notepad &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不过在此之前我们首先需要检测当前用的powershell版本号是多少&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$PSVersionTable&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;PSVersion
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;检查已安装和当前加载的 PSReadLine&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 所有可用版本&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Get-Module&lt;/span&gt; PSReadLine &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ListAvailable &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;Select-Object&lt;/span&gt; Version&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ModuleBase

&lt;span class=&quot;token comment&quot;&gt;# 当前实际加载的版本&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Get-Module&lt;/span&gt; PSReadLine &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;Select-Object&lt;/span&gt; Version&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ModuleBase
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;查看当前支持的选项和快捷键&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Get-Command&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Syntax
&lt;span class=&quot;token function&quot;&gt;Get-PSReadLineKeyHandler&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们需要区分一下Windows powershell5.1和powershell 7的profile配置文件&lt;/p&gt;
&lt;p&gt;可以使用&lt;code&gt;$PROFILE&lt;/code&gt;命令来查找此文件的路径&lt;/p&gt;
&lt;h3 id=&quot;对于powershell-51&quot;&gt;对于powershell 5.1&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于powershell-51&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一般这个路径是在&lt;code&gt;Users\用户名\Documents\PowerShell\Microsoft.PowerShell_profile.ps1&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 创建配置目录&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;New-Item&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ItemType Directory &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Split-Path&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Parent &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force

&lt;span class=&quot;token comment&quot;&gt;# 创建 Profile 文件（若不存在）&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-not&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Test-Path&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;New-Item&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ItemType File &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 查看实际路径&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;对于powershell-7&quot;&gt;对于powershell 7+&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于powershell-7&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一般这个路径是在&lt;code&gt;Users\用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 创建配置目录&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;New-Item&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ItemType Directory &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Split-Path&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Parent &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force

&lt;span class=&quot;token comment&quot;&gt;# 创建 Profile 文件（若不存在）&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;-not&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Test-Path&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;New-Item&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;ItemType File &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Path &lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 查看实际路径&lt;/span&gt;
&lt;span class=&quot;token variable&quot;&gt;$PROFILE&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;配置oh-my-push到profile文件&quot;&gt;配置oh my push到profile文件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置oh-my-push到profile文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在这上面两个profile.ps1文件里粘贴保存&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 初始化为默认主题即jandedobbeleer&lt;/span&gt;
oh-my-posh init pwsh &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者使用规范的写法,方便我们替换成其他主题&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 引入 Oh My Posh 并使用默认主题&lt;/span&gt;
oh-my-posh init pwsh &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;config &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:POSH_THEMES_PATH\jandedobbeleer.omp.json&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当然&lt;code&gt;jandedobbeleer&lt;/code&gt;只是其中一种主题,要是想要其他主题直接替换主题名称即可&lt;/p&gt;
&lt;p&gt;我们可以直接查看当前一共有哪些主题&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Get-ChildItem&lt;/span&gt; &lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:POSH_THEMES_PATH &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Recurse &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Filter&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;*.omp.json&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;你也可以前往&lt;code&gt;oh my posh&lt;/code&gt;官网预览并选择主题&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ohmyposh.dev/docs/themes&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;点击前往主题官网&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260329235044466.webp&quot; alt=&quot;image-20260329235044466&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;h2 id=&quot;符号乱码问题&quot;&gt;符号乱码问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#符号乱码问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后你会遇到一个问题就是在VScode和cursor还有trae里的终端上的oh my push主题的符号都是乱码,这个是因为我们没有告诉编译器我们要用什么字体&lt;/p&gt;
&lt;p&gt;在VS code以及那两个的编辑器的settings.json的&lt;strong&gt;terminal.integrated.defaultProfile.windows&lt;/strong&gt;里添加这些,分别为: 字体首选&lt;code&gt;Cascadia Code NF&lt;/code&gt;,终端输出支持中文避免乱码,和光标闪烁+线条性(取代默认的block样式,那个很难看的)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.defaultProfile.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;PowerShell&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.fontFamily&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&apos;Cascadia Code NF&apos;,Consolas, &apos;Microsoft YaHei&apos;, &apos;Noto Sans CJK SC&apos;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.env.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;LANG&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;zh_CN.UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;LC_ALL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;zh_CN.UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.cursorBlinking&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.cursorStyle&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;line&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260411171835598.webp&quot; alt=&quot;image-20260411171835598&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时就可以看到正常了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Windows%E7%BB%88%E7%AB%AF%E7%BE%8E%E5%8C%96/image-20260411171916444.webp&quot; alt=&quot;image-20260411171916444&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;powershell-的智能终端预测psreadline&quot;&gt;Powershell 的智能终端预测PSReadLine&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powershell-的智能终端预测psreadline&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在安装时默认一般情况下默认就有这个插件了&lt;/p&gt;
&lt;p&gt;这个对两个版本的powershell同样的有一点点区别&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Set-PSReadLineOption -PredictionSource &amp;#x3C;选项&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;作用: 定义预测内容的来源&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;None&lt;/code&gt;&lt;/td&gt;&lt;td&gt;关闭预测&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;History&lt;/code&gt;&lt;/td&gt;&lt;td&gt;仅根据历史命令预测&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Plugin&lt;/code&gt;&lt;/td&gt;&lt;td&gt;仅使用预测插件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;HistoryAndPlugin&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同时使用历史记录和插件(只有powershell7+才有这个参数)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Set-PSReadLineOption -PredictionViewStyle &amp;#x3C;选项&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;作用: 负责预测结果的显示方式&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;InlineView&lt;/code&gt;&lt;/td&gt;&lt;td&gt;当前行后显示灰色建议&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ListView&lt;/code&gt;&lt;/td&gt;&lt;td&gt;展开多条候选列表&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Set-PSReadLineOption -HistorySearchCursorMovesToEnd&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;作用: 每次回溯输入历史，光标定位于输入内容末尾&lt;/p&gt;
&lt;h3 id=&quot;对于powershell-51-1&quot;&gt;对于powershell 5.1&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于powershell-51-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里添加如下内容&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 设置 PSReadLine 预测功能&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionSource History
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionViewStyle ListView
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;HistorySearchCursorMovesToEnd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;对于powershell-7-1&quot;&gt;对于powershell 7&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于powershell-7-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里添加如下内容&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#设置 PSReadLine 预测功能&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionSource HistoryAndPlugin
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionViewStyle ListView
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;HistorySearchCursorMovesToEnd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;二者的区别如字面意思就是7的可以装插件&lt;/p&gt;
&lt;h2 id=&quot;快捷键配置&quot;&gt;快捷键配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#快捷键配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;同样的我们也可以添加一些快捷键&lt;/p&gt;
&lt;p&gt;我们&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里添加如下内容&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Tab：菜单补全&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Tab &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; MenuComplete

&lt;span class=&quot;token comment&quot;&gt;# 上下键：按当前输入搜索历史&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key UpArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchBackward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key DownArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchForward

&lt;span class=&quot;token comment&quot;&gt;# Ctrl+Z：撤销当前命令行编辑&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Ctrl+z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; Undo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;powershell-7插件安装&quot;&gt;powershell 7插件安装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powershell-7插件安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;安装psreadline默认&quot;&gt;安装PSReadLine(默认)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装psreadline默认&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一般情况下这个是下载powershell就自带了,不需要额外安装了&lt;/p&gt;
&lt;p&gt;不过还是说一下吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 安装&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; PSReadLine &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser

&lt;span class=&quot;token comment&quot;&gt;# 更新&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Update-Module&lt;/span&gt; PSReadLine
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后输入Y同意安装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;Untrusted repository
You are installing the modules &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt; an untrusted repository&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;If&lt;/span&gt; you trust this repository&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; change its
InstallationPolicy value by running the &lt;span class=&quot;token function&quot;&gt;Set-PSRepository&lt;/span&gt; cmdlet&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; Are you sure you want to install the modules &lt;span class=&quot;token keyword&quot;&gt;from&lt;/span&gt;
&lt;span class=&quot;token string&quot;&gt;&apos;PSGallery&apos;&lt;/span&gt;?
&lt;span class=&quot;token namespace&quot;&gt;[Y]&lt;/span&gt; 是&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token namespace&quot;&gt;[A]&lt;/span&gt; 全是&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;A&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token namespace&quot;&gt;[N]&lt;/span&gt; 否&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;N&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token namespace&quot;&gt;[L]&lt;/span&gt; 全否&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;L&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token namespace&quot;&gt;[S]&lt;/span&gt; 暂停&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;S&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;?&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; 帮助 &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;默认值为“N”&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;:Y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;注意,如果你不想手动输入Y确认的话,只需要在Install-Module PSReadLine -Scope CurrentUser后面添加&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-Force&lt;/code&gt;参数如&lt;code&gt;Install-Module PSReadLine -Scope CurrentUser -Force&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; PSReadLine
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装completionpredictor&quot;&gt;安装CompletionPredictor&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装completionpredictor&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: 提供额外的命令预测候选,增强PSReadLine预测&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们打开powershell  7 执行如下命令安装&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; CompletionPredictor &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; CompletionPredictor
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在powershell 7输入&lt;code&gt;Get-Module CompletionPredictor &lt;/code&gt;后验证即可&lt;/p&gt;
&lt;h3 id=&quot;安装terminal-icons&quot;&gt;安装Terminal-Icons&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装terminal-icons&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: 让 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;Get-ChildItem&lt;/code&gt; 的文件列表显示不同类型的图标，例如文件夹、代码文件、图片和压缩包&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; Terminal-Icons &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; Terminal-Icons
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装psfzf--fzf&quot;&gt;安装PSFzf + fzf&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装psfzf--fzf&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: 可以模糊搜索历史命令、文件和路径。配置好之后，按 &lt;code&gt;Ctrl+R&lt;/code&gt; 可以快速搜索以前执行过的命令，&lt;code&gt;Ctrl+T&lt;/code&gt; 可以搜索文件&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;安装 fzf&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id junegunn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fzf &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在 PowerShell 7 中安装模块&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; PSFzf &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; PSFzf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装zoxide&quot;&gt;安装zoxide&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装zoxide&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: 记住你常去的目录,之后不必反复输入很长的路径，可以用 &lt;code&gt;z&lt;/code&gt; 加目录名称的关键词快速跳转&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个并不是powershell插件,而是大多数终端都通用,包括powershell 5.1 和7+&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id ajeetdsouza&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;zoxide &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Smart directory navigation&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&amp;#x26; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; zoxide init powershell &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Out-String&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用方法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;z foo              &lt;span class=&quot;token comment&quot;&gt;# cd into highest ranked directory matching foo&lt;/span&gt;
z foo bar          &lt;span class=&quot;token comment&quot;&gt;# cd into highest ranked directory matching foo and bar&lt;/span&gt;
z foo &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;# cd into a subdirectory starting with foo&lt;/span&gt;

z ~&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;foo            &lt;span class=&quot;token comment&quot;&gt;# z also works like a regular cd command&lt;/span&gt;
z foo/             &lt;span class=&quot;token comment&quot;&gt;# cd into relative path&lt;/span&gt;
z &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;               &lt;span class=&quot;token comment&quot;&gt;# cd one level up&lt;/span&gt;
z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;                &lt;span class=&quot;token comment&quot;&gt;# cd into previous directory&lt;/span&gt;

zi foo             &lt;span class=&quot;token comment&quot;&gt;# cd with interactive selection (using fzf)&lt;/span&gt;

z foo&amp;#x3C;SPACE&gt;&amp;#x3C;TAB&gt;  &lt;span class=&quot;token comment&quot;&gt;# show interactive completions (bash 4.4+/fish/zsh only)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装-zlocation&quot;&gt;安装 ZLocation&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装-zlocation&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: 记录访问过的目录，使用关键词快速跳转,和Zoxide差不多&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们安装的时候Zlocation和Zoxide二选一即可,二者功能和使用方法类似&lt;/p&gt;
&lt;p&gt;或者我们可以在powershell 5.1用zoxide ,在7里用这个&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; ZLocation &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; ZLocation
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;使用方法&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;C:\&gt;z foo
C:\foo&gt;z bar
C:\baz\bar&gt; z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
C:\foo&gt;z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
C:\&gt;z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;
C:\&gt;&lt;span class=&quot;token comment&quot;&gt;#no-op&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;安装posh-git&quot;&gt;安装posh-git&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装posh-git&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作用: Git 命令补全，并可在提示符中显示分支、工作区状态&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; posh-git &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后在&lt;code&gt;Microsoft.PowerShell_profile.ps1&lt;/code&gt;里底部添加启用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; posh-git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;插件安装和profile速览&quot;&gt;插件安装和profile速览&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件安装和profile速览&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;如果你表示“小孩子才做选择,瓦达西全都要!”,没问题~&lt;/p&gt;
&lt;h3 id=&quot;安装前提是已经安装powershell-7并打开&quot;&gt;安装(前提是已经安装powershell 7并打开)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#安装前提是已经安装powershell-7并打开&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; PSReadLine &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; CompletionPredictor &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; Terminal-Icons &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; PSFzf &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id junegunn&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;fzf &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; ZLocation &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
&lt;span class=&quot;token function&quot;&gt;Install-Module&lt;/span&gt; posh-git &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Scope CurrentUser &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Force
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id gerardog&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;gsudo &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;source winget
winget install &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;id ajeetdsouza&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;zoxide &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;exact
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;profile配置文件&quot;&gt;profile配置文件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#profile配置文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;powershell-51&quot;&gt;powershell 5.1&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powershell-51&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 引入 Oh My Posh 并使用默认主题&lt;/span&gt;
oh-my-posh init pwsh &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;config &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:POSH_THEMES_PATH\jandedobbeleer.omp.json&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 设置 PSReadLine 预测功能&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; PSReadLine
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionSource History
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionViewStyle ListView
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;HistorySearchCursorMovesToEnd

&lt;span class=&quot;token comment&quot;&gt;# zoxide: 智能目录导航&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&amp;#x26; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; zoxide init powershell &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Out-String&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# gsudo别名sudo&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-Alias&lt;/span&gt; sudo gsudo

&lt;span class=&quot;token comment&quot;&gt;# 快捷键&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Tab: 菜单补全&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# UpArrow: 向上搜索历史&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# DownArrow: 向下搜索历史&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Ctrl+Z: 撤销当前命令行编辑&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Tab &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; MenuComplete
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key UpArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchBackward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key DownArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchForward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Ctrl+z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; Undo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;powershell-7&quot;&gt;powershell 7&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powershell-7&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 引入 Oh My Posh 并使用默认主题&lt;/span&gt;
oh-my-posh init pwsh &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;config &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;$env&lt;/span&gt;:POSH_THEMES_PATH\jandedobbeleer.omp.json&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Invoke-Expression&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 设置 PSReadLine + CompletionPredictor 预测功能&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; PSReadLine
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; CompletionPredictor
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionSource HistoryAndPlugin
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;PredictionViewStyle ListView
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineOption&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;HistorySearchCursorMovesToEnd

&lt;span class=&quot;token comment&quot;&gt;# 快捷键&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Tab: 菜单补全&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# UpArrow: 向上搜索历史&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# DownArrow: 向下搜索历史&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Ctrl+Z: 撤销当前命令行编辑&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Tab &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; MenuComplete
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key UpArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchBackward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key DownArrow &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; HistorySearchForward
&lt;span class=&quot;token function&quot;&gt;Set-PSReadLineKeyHandler&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;Key Ctrl+z &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;Function&lt;/span&gt; Undo

&lt;span class=&quot;token comment&quot;&gt;# 文件列表图标&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; Terminal-Icons

&lt;span class=&quot;token comment&quot;&gt;# 模糊搜索&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; PSFzf

&lt;span class=&quot;token comment&quot;&gt;# Git提示&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; posh-git

&lt;span class=&quot;token comment&quot;&gt;# zoxide: 智能目录导航(和ZLocation二选一)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# Invoke-Expression (&amp;#x26; { zoxide init powershell | Out-String })&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# ZLocation: 目录位置导航&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Import-Module&lt;/span&gt; ZLocation

&lt;span class=&quot;token comment&quot;&gt;# gsudo别名sudo&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;Set-Alias&lt;/span&gt; sudo gsudo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>电脑日常</category><category>Powershell</category></item><item><title>win加R命令和Windows快捷键</title><link>https://huyangpahuo.vercel.app/posts/win-jia-r-ming-ling-he-windows-kuai-jie-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/win-jia-r-ming-ling-he-windows-kuai-jie-jian/</guid><description>本篇记载win+R命令和Windows快捷键</description><pubDate>Sun, 29 Mar 2026 21:14:01 GMT</pubDate><content:encoded>&lt;h1 id=&quot;以下是一些常用的命令和快捷键用chatgpt统计了一下&quot;&gt;以下是一些常用的命令和快捷键,用Chatgpt统计了一下&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#以下是一些常用的命令和快捷键用chatgpt统计了一下&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;winr-命令&quot;&gt;Win+R 命令&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#winr-命令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;一系统工具类&quot;&gt;一、系统工具类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一系统工具类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cmd&lt;/code&gt; → 命令提示符&lt;/li&gt;
&lt;li&gt;&lt;code&gt;powershell&lt;/code&gt; → PowerShell&lt;/li&gt;
&lt;li&gt;&lt;code&gt;taskmgr&lt;/code&gt; → 任务管理器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;msconfig&lt;/code&gt; → 系统配置（启动项管理）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;services.msc&lt;/code&gt; → 服务管理&lt;/li&gt;
&lt;li&gt;&lt;code&gt;eventvwr&lt;/code&gt; → 事件查看器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;perfmon&lt;/code&gt; → 性能监视器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;二设置与控制面板&quot;&gt;二、设置与控制面板&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二设置与控制面板&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;control&lt;/code&gt; → 控制面板&lt;/li&gt;
&lt;li&gt;&lt;code&gt;settings&lt;/code&gt; → Windows 设置&lt;/li&gt;
&lt;li&gt;&lt;code&gt;appwiz.cpl&lt;/code&gt; → 程序和功能（卸载软件）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optionalfeatures&lt;/code&gt; → Windows 功能开关&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sysdm.cpl&lt;/code&gt; → 系统属性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;desk.cpl&lt;/code&gt; → 显示设置（旧版）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;三磁盘与设备&quot;&gt;三、磁盘与设备&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三磁盘与设备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;diskmgmt.msc&lt;/code&gt; → 磁盘管理&lt;/li&gt;
&lt;li&gt;&lt;code&gt;devmgmt.msc&lt;/code&gt; → 设备管理器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cleanmgr&lt;/code&gt; → 磁盘清理&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dfrgui&lt;/code&gt; → 磁盘碎片整理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;四网络相关&quot;&gt;四、网络相关&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#四网络相关&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ncpa.cpl&lt;/code&gt; → 网络连接&lt;/li&gt;
&lt;li&gt;&lt;code&gt;inetcpl.cpl&lt;/code&gt; → Internet 选项&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ipconfig&lt;/code&gt;（需 cmd）→ 查看IP&lt;/li&gt;
&lt;li&gt;&lt;code&gt;firewall.cpl&lt;/code&gt; → 防火墙&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;五文件与路径&quot;&gt;五、文件与路径&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#五文件与路径&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;explorer&lt;/code&gt; → 文件资源管理器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shell:startup&lt;/code&gt; → 启动文件夹&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shell:desktop&lt;/code&gt; → 桌面&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shell:downloads&lt;/code&gt; → 下载目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%temp%&lt;/code&gt; → 临时文件夹&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;六安全与用户&quot;&gt;六、安全与用户&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#六安全与用户&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;netplwiz&lt;/code&gt; → 用户账户管理&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secpol.msc&lt;/code&gt; → 本地安全策略（部分版本没有）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;lusrmgr.msc&lt;/code&gt; → 本地用户和组（专业版以上）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;七高级开发常用&quot;&gt;七、高级/开发常用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#七高级开发常用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;regedit&lt;/code&gt; → 注册表编辑器&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gpedit.msc&lt;/code&gt; → 组策略（专业版）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dxdiag&lt;/code&gt; → DirectX诊断工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;verifier&lt;/code&gt; → 驱动验证工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;八一些隐藏但超实用&quot;&gt;八、一些隐藏但超实用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#八一些隐藏但超实用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;winver&lt;/code&gt; → 查看Windows版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mrt&lt;/code&gt; → 恶意软件删除工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;osk&lt;/code&gt; → 屏幕键盘&lt;/li&gt;
&lt;li&gt;&lt;code&gt;magnify&lt;/code&gt; → 放大镜&lt;/li&gt;
&lt;li&gt;&lt;code&gt;snippingtool&lt;/code&gt; → 截图工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;cmd-命令&quot;&gt;cmd 命令&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#cmd-命令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;一基础操作&quot;&gt;一、基础操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一基础操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;help        :: 查看所有命令
help dir    :: 查看某个命令的帮助

cls         :: 清屏
exit        :: 退出 CMD
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;二文件--文件夹操作&quot;&gt;二、文件 &amp;#x26; 文件夹操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二文件--文件夹操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dir                 :: 查看当前目录文件
D:				  :: 进入D盘
C:				  :: 进入C盘
cd 目录名           :: 进入目录
cd ..               :: 返回上一级
cd /d D:\test       :: 切换盘符并进入目录

mkdir 文件夹名      :: 创建文件夹
rmdir 文件夹名      :: 删除空文件夹
rmdir /s 文件夹名   :: 删除非空文件夹

del 文件名          :: 删除文件
copy a.txt b.txt    :: 复制文件
move a.txt D:\      :: 移动文件
ren a.txt b.txt     :: 重命名
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;三系统相关&quot;&gt;三、系统相关&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三系统相关&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;ipconfig            :: 查看IP地址
ipconfig /all       :: 查看详细网络信息

ping www.baidu.com  :: 测试网络
tracert 网站        :: 路由追踪

tasklist            :: 查看进程
taskkill /im xxx.exe /f   :: 强制结束进程

shutdown /s /t 0    :: 立即关机
shutdown /r /t 0    :: 重启
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;四环境变量--系统信息&quot;&gt;四、环境变量 &amp;#x26; 系统信息&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#四环境变量--系统信息&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;set                 :: 查看所有环境变量
set PATH            :: 查看PATH变量
set PATH=xxx        :: 临时修改环境变量

echo %PATH%         :: 输出变量值
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;五常用开发调试&quot;&gt;五、常用开发/调试&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#五常用开发调试&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;where python        :: 查找程序路径
where node

echo Hello          :: 输出文本
pause               :: 暂停（常用于bat脚本）

start 程序名        :: 打开程序
start .             :: 打开当前文件夹（资源管理器）

code .              :: 用VSCode打开（需配置环境变量）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;六磁盘操作&quot;&gt;六、磁盘操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#六磁盘操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;diskpart            :: 磁盘管理工具（慎用）
chkdsk              :: 检查磁盘
format D:           :: 格式化磁盘（危险⚠️）
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;七权限相关&quot;&gt;七、权限相关&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#七权限相关&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;net user            :: 查看用户
net user 用户名 密码 /add   :: 创建用户
net localgroup administrators 用户名 /add   :: 加管理员权限
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;八进阶bat脚本批处理常用&quot;&gt;八、进阶（bat脚本批处理常用）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#八进阶bat脚本批处理常用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;@echo off           :: 关闭命令显示
:: 这是注释

if exist a.txt (...)   :: 条件判断
for %%i in (*.txt) do (...)   :: 循环
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;小技巧&quot;&gt;小技巧&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#小技巧&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Tab&lt;/code&gt; 自动补全路径&lt;/li&gt;
&lt;li&gt;&lt;code&gt;↑ ↓&lt;/code&gt; 快速翻历史命令&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl + C&lt;/code&gt; 强制停止命令&lt;/li&gt;
&lt;li&gt;右键可以粘贴&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;windows-快捷键&quot;&gt;Windows 快捷键&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#windows-快捷键&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;一基础操作-1&quot;&gt;一、基础操作&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一基础操作-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + C&lt;/strong&gt;：复制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + V&lt;/strong&gt;：粘贴&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + X&lt;/strong&gt;：剪切&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Z&lt;/strong&gt;：撤销&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Y&lt;/strong&gt;：重做&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + A&lt;/strong&gt;：全选&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;二文件--资源管理器&quot;&gt;二、文件 / 资源管理器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二文件--资源管理器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + E&lt;/strong&gt;：打开文件资源管理器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt + ↑&lt;/strong&gt;：返回上一级目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Shift + N&lt;/strong&gt;：新建文件夹&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F2&lt;/strong&gt;：重命名文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Delete&lt;/strong&gt;：删除&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shift + Delete&lt;/strong&gt;：彻底删除（不进回收站）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;三窗口管理&quot;&gt;三、窗口管理&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三窗口管理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + D&lt;/strong&gt;：显示桌面 / 恢复窗口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + L&lt;/strong&gt;：锁屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt + Tab&lt;/strong&gt;：切换窗口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt + F4&lt;/strong&gt;：关闭当前窗口&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + ↑ / ↓ / ← / →&lt;/strong&gt;：窗口最大化 / 最小化 / 分屏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + Tab&lt;/strong&gt;：任务视图&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;四浏览器通用快捷键&quot;&gt;四、浏览器通用快捷键&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#四浏览器通用快捷键&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + T&lt;/strong&gt;：新建标签页&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + W&lt;/strong&gt;：关闭当前标签&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Shift + T&lt;/strong&gt;：恢复关闭的标签&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Tab&lt;/strong&gt;：切换标签&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + L&lt;/strong&gt;：选中地址栏&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + R / F5&lt;/strong&gt;：刷新&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;五搜索--系统&quot;&gt;五、搜索 &amp;#x26; 系统&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#五搜索--系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + S&lt;/strong&gt;：打开搜索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + R&lt;/strong&gt;：运行（输入命令）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + I&lt;/strong&gt;：打开设置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + Pause&lt;/strong&gt;：系统信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;六高效办公&quot;&gt;六、高效办公&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#六高效办公&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + F&lt;/strong&gt;：查找&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + H&lt;/strong&gt;：替换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + P&lt;/strong&gt;：打印&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + S&lt;/strong&gt;：保存&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ctrl + Shift + Esc&lt;/strong&gt;：任务管理器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;七虚拟桌面&quot;&gt;七、虚拟桌面&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#七虚拟桌面&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + Ctrl + D&lt;/strong&gt;：新建桌面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + Ctrl + ← / →&lt;/strong&gt;：切换桌面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + Ctrl + F4&lt;/strong&gt;：关闭当前桌面&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;八截图&quot;&gt;八、截图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#八截图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + Shift + S&lt;/strong&gt;：区域截图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PrtSc&lt;/strong&gt;：全屏截图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alt + PrtSc&lt;/strong&gt;：当前窗口截图&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;九进阶&quot;&gt;九、进阶&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#九进阶&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Win + X&lt;/strong&gt;：打开高级菜单（设备管理、终端等）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + .&lt;/strong&gt;：打开表情面板 😊&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + V&lt;/strong&gt;：剪贴板历史（需开启）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Win + G&lt;/strong&gt;：游戏栏&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>电脑日常</category><category>Windows</category></item><item><title>Steam挂卡教程</title><link>https://huyangpahuo.vercel.app/posts/steam-gua-ka-jiao-cheng/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/steam-gua-ka-jiao-cheng/</guid><description>本篇尝试Steam的挂卡</description><pubDate>Sun, 29 Mar 2026 14:03:16 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来了解一下steam挂卡&quot;&gt;今天来了解一下Steam挂卡&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来了解一下steam挂卡&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;众所周知steam玩游戏时会解锁成就,此时屏幕右下角会弹出来一个小卡片,不过,这个卡片是可以卖钱的&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329193930217.webp&quot; alt=&quot;image-20260329193930217&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;虽然我不理解为什么会有人买这种东西....&lt;/p&gt;
&lt;h2 id=&quot;idle_master_extended下载与使用&quot;&gt;idle_master_extended下载与使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#idle_master_extended下载与使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先我们去Github上需要下载一个软件&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/JonasNilson/idle_master_extended/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;点击前往下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载后是这个样子&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329194559857.webp&quot; alt=&quot;image-20260329194559857&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们先点击&lt;font color=&quot;#40E0D0&quot;&gt;文件&lt;/font&gt;再点击&lt;font color=&quot;#40E0D0&quot;&gt;设置&lt;/font&gt;,按照我的勾选&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329201611234.png&quot; alt=&quot;image-20260329201611234&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时点击&lt;font color=&quot;#40E0D0&quot;&gt;登录&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329194635247.webp&quot; alt=&quot;image-20260329194635247&quot; style=&quot;zoom: 80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个可不是填写账号名和密码,这个需要去先浏览器登录steam网页&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329194908038.webp&quot; alt=&quot;image-20260329194908038&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;首先点击右上角你的&lt;font color=&quot;#40E0D0&quot;&gt;头像&lt;/font&gt; 进入个人信息界面(这一步很重要)&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329195422786.webp&quot; alt=&quot;image-20260329195422786&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;然后在浏览器中按&lt;font color=&quot;#FF1493&quot;&gt;F12&lt;/font&gt;打开或&lt;font color=&quot;#FF1493&quot;&gt;鼠标右键选择“检查”&lt;/font&gt;,此时就会弹出开发者工具,也就是前端开发者用的功能&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329195857129.webp&quot; alt=&quot;image-20260329195857129&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击上方的这个 &lt;font color=&quot;#FF1493&quot;&gt;&gt;&gt; &lt;/font&gt; 选择&lt;font color=&quot;#FF1493&quot;&gt;Application(应用软件)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329200403160.webp&quot; alt=&quot;image-20260329200403160&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;很好,现在在这个Application界面下,找到这个&lt;font color=&quot;#FF1493&quot;&gt;Cookies&lt;/font&gt;(Cookies就是浏览器会自动保存网站的登录和活动信息的记录)&lt;/p&gt;
&lt;p&gt;找到下面我圈起来的地方&lt;/p&gt;
&lt;p&gt;然后点击就出现我们刚才看到的那两个单词 &lt;code&gt;sessionid&lt;/code&gt; 和  &lt;code&gt;steamLoginSecure&lt;/code&gt;  ,而右侧的就是对应的id和登录安全秘钥&lt;/p&gt;
&lt;p&gt;这两个你们不要轻易泄露了,否则可能被盗号&lt;/p&gt;
&lt;p&gt;我们把两个分别粘贴进去,点击&lt;font color=&quot;#FF1493&quot;&gt;更新&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329201338548.webp&quot; alt=&quot;image-20260329201338548&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时可以看到,已经成功启动了,对了,浏览器不要关闭了,保持这个界面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329201518756.png&quot; alt=&quot;image-20260329201518756&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时打开Steam客户端(不是网页端),就会发现很多游戏都启动了,尽管你没有下载他们&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329201751391.webp&quot; alt=&quot;image-20260329201751391&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;注意,如果你有steam好友的话一定要在这个地方开启&lt;font color=&quot;#40E0D0&quot;&gt;隐身&lt;/font&gt;状态,否则他们打开steam时肯定会骂你(因为他们的界面会疯狂弹出你在玩游戏的信息)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329202023068.webp&quot; alt=&quot;image-20260329202023068&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;运行大概半小时后就可一看到出货了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329202425102.webp&quot; alt=&quot;image-20260329202425102&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于这个本质上是伪装玩家玩游戏出卡片,所以会污染你真实游戏时长(这也是某些人玩游戏时长高达上千小时的原因,并不是说他们真的没日没夜的玩,就是使用了这种外挂处理的),如果你比较在意游戏时长就可以选择不搞这个,反正卖这种卡片收益甚微&lt;font color=&quot;#FFD700&quot;&gt; 狗头狗头狗头&lt;/font&gt;&lt;/p&gt;
&lt;h2 id=&quot;watt-toolkit的下载&quot;&gt;watt toolkit的下载&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#watt-toolkit的下载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个软件直接去微软商店搜索直接下载即可,下载完记得先打开steam的加速再登录steam账号&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329202900508.webp&quot; alt=&quot;image-20260329202900508&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时选择&lt;font color=&quot;#40E0D0&quot;&gt;steam挂卡&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329203044801.webp&quot; alt=&quot;image-20260329203044801&quot; style=&quot;zoom:67%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;先不要启动,我们需要下载一些插件&lt;/p&gt;
&lt;p&gt;首先选择右上角的&lt;font color=&quot;#FF1493&quot;&gt;脚本配置&lt;/font&gt; 点击&lt;font color=&quot;#FF1493&quot;&gt;脚本工坊&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329203428121.webp&quot; alt=&quot;image-20260329203428121&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到插件下载-------其中这个 &lt;font color=&quot;#FF1493&quot;&gt;Steam Economy Enhancer &lt;/font&gt;必须下载,否则无法实现批量出售商品功能&lt;/p&gt;
&lt;p&gt;其他的插件可以对照我的下载,使用方法可以自己上网去搜(因为作用不大,还不如直接去小黑盒查看)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329203740087.webp&quot; alt=&quot;image-20260329203740087&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后&lt;font color=&quot;#FF1493&quot;&gt;启用脚本&lt;/font&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329203331548.webp&quot; alt=&quot;image-20260329203331548&quot; style=&quot;zoom:67%;&quot;&gt;
&lt;p&gt;回到steam客户端(不是网页端)  的  个人界面&lt;/p&gt;
&lt;p&gt;选择&lt;font color=&quot;#FF1493&quot;&gt;库存&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329204122560.webp&quot; alt=&quot;image-20260329204122560&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此时多了三个绿色的按钮,选择“&lt;font color=&quot;#40E0D0&quot;&gt;出售所有卡牌&lt;/font&gt;”,然后就会批量将卡牌卖出去&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329204225833.webp&quot; alt=&quot;image-20260329204225833&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就可以坐等卖家购买你的卡牌了(一般情况下没有人买,但如果你把价格调低就有可能)&lt;/p&gt;
&lt;p&gt;而调整价格的方法就是将当前界面往下滑 找到右下角的 &lt;font color=&quot;#FF1493&quot;&gt;SEE设置&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329205428805.webp&quot; alt=&quot;image-20260329205428805&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点开&lt;font color=&quot;#40E0D0&quot;&gt;社区-&gt;市场&lt;/font&gt;  就可以看到正在卖的东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/Steam%E6%8C%82%E5%8D%A1%E6%95%99%E7%A8%8B/image-20260329205544175.webp&quot; alt=&quot;image-20260329205544175&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Steam</category><category>Diary</category></item><item><title>清理一下磁盘</title><link>https://huyangpahuo.vercel.app/posts/qing-li-yi-xia-ci-pan/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/qing-li-yi-xia-ci-pan/</guid><description>个人清理C盘记录</description><pubDate>Sat, 28 Mar 2026 23:25:19 GMT</pubDate><content:encoded>&lt;h1 id=&quot;磁盘又又又又满了&quot;&gt;磁盘又又又又满了&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#磁盘又又又又满了&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;以前我都是懒得清, 用deskgenius把D盘分了150G给了C盘,直到今天&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260328232755853.webp&quot; alt=&quot;image-20260328232755853&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我就纳闷了明明软件都装到D盘怎么C盘还会满&lt;/p&gt;
&lt;p&gt;用Spacesnifer检测了一下&lt;/p&gt;
&lt;p&gt;主要是看appdata里的内容&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260328233005649.webp&quot; alt=&quot;image-20260328233005649&quot; style=&quot;zoom: 25%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260328233029352.webp&quot; alt=&quot;image-20260328233029352&quot; style=&quot;zoom: 25%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260328233053328.webp&quot; alt=&quot;image-20260328233053328&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;然后经过一系列操作,比如更改Temp缓存路径还有软件的默认存储位置,删掉无用软件等等,清理Appdata文件夹里的文件夹,获得40G的空间&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260329093719939.webp&quot; alt=&quot;image-20260329093719939&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后就是顺便清理了一下D盘&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260329130843652.webp&quot; alt=&quot;image-20260329130843652&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后手动去除可以看见的缓存之后&lt;/p&gt;
&lt;p&gt;我使用Privazer专业版磁盘清理软件清理一下残余的东西,又获得几个G&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20261008202856248.webp&quot; alt=&quot;image-20261008202856248&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260329134138635.webp&quot; alt=&quot;image-20260329134138635&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后删掉几个steam下载的通关的单机游戏&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%B8%85%E7%90%86%E4%B8%80%E4%B8%8B%E7%A3%81%E7%9B%98/image-20260329140053162.webp&quot; alt=&quot;image-20260329140053162&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;很好,至少暂时不用再操心这种东西了&lt;/p&gt;</content:encoded><category>生活日常</category><category>Diary</category></item><item><title>Unity---2D地图瓦片</title><link>https://huyangpahuo.vercel.app/posts/unity-2d-di-tu-wa-pian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/unity-2d-di-tu-wa-pian/</guid><description>这个是关于unity的2d的瓦片系统</description><pubDate>Thu, 26 Mar 2026 11:22:33 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来了解一下地图瓦片这个相对简单&quot;&gt;今天来了解一下地图瓦片,这个相对简单&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来了解一下地图瓦片这个相对简单&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326112434254.webp&quot; alt=&quot;image-20260326112434254&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;首先我们在Hierarchy(层级)窗口里右键&lt;/p&gt;
&lt;p&gt;然后2D object(二维对象)-&gt;tilemap(瓦片地图)-&gt;rectangular(矩形瓦片)&lt;/p&gt;
&lt;p&gt;这里我们管2D游戏里的地图统称tilemap即瓦片,这个在其他游戏引擎里也是相同的定义,瓦片就是附着在游戏地图上的“贴图”&lt;/p&gt;
&lt;p&gt;创建完成之后就会看到层级窗口出现了这个东西,不管你选择什么类型的瓦片都是以Grid(网格) 作为父对象的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326112939546.webp&quot; alt=&quot;image-20260326112939546&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是有什么用呢?这时候就需要一个东西了-----那就是瓦片面板 tile palette&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326113100791.webp&quot; alt=&quot;image-20260326113100791&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;众所周知,在游戏引擎中,如果场景中充满了不同资源,那么将会占用非常巨大的内存(很多大厂的游戏动辄100G  200G就是因为里面充满了美术和建模资源),然而如果场景中都是相同的资源,比如NPC小怪都是一样的,采用的都是相同的贴图资源,那么其实所有小怪贴图占用的存储空间其实只有一张贴图的存储空间,这里就体现地图系统的优点了-----在场景中轻而易举的复用贴图资源而非一张一张的手动调整&lt;/p&gt;
&lt;p&gt;首先第一步,选中一张贴图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326113922955.webp&quot; alt=&quot;image-20260326113922955&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后左键长按拖到右边面板中&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326114008462.webp&quot; alt=&quot;image-20260326114008462&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后你就可以看到右边的面板出现了这个贴图&lt;/p&gt;
&lt;p&gt;然后我们就可以像使用油画盘蘸颜料一样在Scene场景中使用这些贴图&lt;/p&gt;
&lt;p&gt;当我们选中一张贴图时,就可以看到上面自动切换到这个画笔模式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326114400352.webp&quot; alt=&quot;image-20260326114400352&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在scene场景里按住左键画几笔就会发现,贴图就像颜料一样附着在游戏场景中&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326114552239.webp&quot; alt=&quot;image-20260326114552239&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里还可以批量框选填充&lt;/p&gt;
&lt;p&gt;就是选择画笔形状旁边的那个fill填充模式&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326114702852.webp&quot; alt=&quot;image-20260326114702852&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;以此类推,我们就画好地图了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326115222320.webp&quot; alt=&quot;image-20260326115222320&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然而现实没有这么“轻而易举”,这种确实很适合制作传说之下星露谷物语这种类型的游戏,但是玩家更喜欢地图是变化的,可破坏的,或者卷轴滚动的,就先不说这个了&lt;/p&gt;
&lt;p&gt;哦对了,忘记说怎么制作瓦片地图了,这个也很简单,不过在此之前我们学一下怎么删除不小心放进入的多余的瓦片&lt;/p&gt;
&lt;p&gt;首先在tile palette中选择这个多余的瓦片,然后查看右侧的inspector检查器窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326120846757.webp&quot; alt=&quot;image-20260326120846757&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到已经删掉了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326120701704.webp&quot; alt=&quot;image-20260326120701704&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;瓦片的制作分为两种,第一种就是不切割整个放进去适合小瓦片,例如我们刚才放的人物&lt;/p&gt;
&lt;p&gt;​	这种直接把png图片拖入unity的asset文件夹里,然后拖到tile palette即可&lt;/p&gt;
&lt;p&gt;​	但是这种不适合大图片,不然就会创造出巨大无比的瓦片&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326121501537.webp&quot; alt=&quot;image-20260326121501537&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以我们需要切割瓦片&lt;/p&gt;
&lt;p&gt;首先选中图片,然后在inspector里注意选择这两个选项-----sprite mode选择多张图mulyiple,为我们切割图片做准备&lt;/p&gt;
&lt;p&gt;filter mode 选择 point(no filter)邻点差值采样,不然放进入的图片糊的一批&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326121844173.webp&quot; alt=&quot;image-20260326121844173&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后点击apply 应用设置,并点击sprite editor精灵图编辑器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326122451764.webp&quot; alt=&quot;image-20260326122451764&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,我们刚才的瓦片地图的大小是16×16的,所以切割时可以选择16×16&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326122756124.webp&quot; alt=&quot;image-20260326122756124&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们选择64×64吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326122941128.webp&quot; alt=&quot;image-20260326122941128&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就会看到蓝发娘被我们“碎尸”了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326123120700.webp&quot; alt=&quot;image-20260326123120700&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;使用的话可以按住shift加选(而按住ctrl是减选)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326123406515.webp&quot; alt=&quot;image-20260326123406515&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就可以看到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326131854826.webp&quot; alt=&quot;image-20260326131854826&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然为了避免素材之间出现鱼龙混杂的情况,我们可以对于每一个场景都创建一个瓦片面板&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Unity---2D%E5%9C%B0%E5%9B%BE%E7%93%A6%E7%89%87/image-20260326132808554.webp&quot; alt=&quot;image-20260326132808554&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;大概就是这样,其实还有一个东西就是地图碰撞体组件,也就是地图空气墙,这里暂时不讲&lt;/p&gt;</content:encoded><category>Unity</category><category>Unity</category></item><item><title>战地3游戏打不开解决方案</title><link>https://huyangpahuo.vercel.app/posts/zhan-di-3-you-xi-da-bu-kai-jie-jue-fang-an/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/zhan-di-3-you-xi-da-bu-kai-jie-jue-fang-an/</guid><description>关于EA的战地3的垃圾启动器打不开游戏</description><pubDate>Wed, 25 Mar 2026 12:08:54 GMT</pubDate><content:encoded>&lt;h1 id=&quot;买了战地3发现打不开游戏ea的启动器真的垃圾&quot;&gt;买了战地3发现打不开游戏,EA的启动器真的垃圾&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#买了战地3发现打不开游戏ea的启动器真的垃圾&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325121546489.webp&quot; alt=&quot;image-20260325121546489&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;因为战地3只能通过网页登录和启动游戏(都2026年了还不改......鉴定为EA弃子)&lt;/p&gt;
&lt;p&gt;这里解决方法第一步是首先关掉电脑上的微星小飞机(如果有的话),包括后台也退出,否则游戏就会一直卡在初始化状态&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325123035908.webp&quot; alt=&quot;image-20260325123035908&quot; style=&quot;zoom:80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325123145535.webp&quot; alt=&quot;image-20260325123145535&quot; style=&quot;zoom: 80%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就是第二步,你会发现启动成功了,但是会弹出一个报错那就是DirectX报错&lt;/p&gt;
&lt;p&gt;这里就用&lt;a href=&quot;https://www.dogfight360.com/blog/29/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;羽翼城大佬&lt;/font&gt;&lt;/a&gt;的补丁&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325123653121.webp&quot; alt=&quot;image-20260325123653121&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对了,大佬还制作了很多很牛的加速器和工具,感兴趣的可以看看&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325125758809.webp&quot; alt=&quot;image-20260325125758809&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.dogfight360.com/blog/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#FF1493&quot;&gt;点击查看大佬Blog&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;对了,关于微软商店游戏下载速度慢的一批,可以使用这个软件加速&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325130122070.webp&quot; alt=&quot;image-20260325130122070&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/skydevil88/XboxDownload&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;Xbox下载助手&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后玩游戏需要风灵月影的话使用这个软件  &lt;a href=&quot;https://github.com/dyang886/Game-Cheats-Manager&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;下载地址&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325130303203.webp&quot; alt=&quot;image-20260325130303203&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个软件会直接下载风灵月影官网的外挂,十分好用&lt;/p&gt;
&lt;p&gt;不过我们如果不用梯子和还有小黑盒加速器UU加速器这些加速器加速steam和Epic的话,还可以去微软商店下载这个软件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%9F%E6%B4%BB%E6%97%A5%E5%B8%B8/%E6%88%98%E5%9C%B03%E6%B8%B8%E6%88%8F%E6%89%93%E4%B8%8D%E5%BC%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260325131854900.webp&quot; alt=&quot;image-20260325131854900&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不要钱而且速度快,强烈推荐&lt;/p&gt;</content:encoded><category>生活日常</category><category>BattleField</category><category>Game</category></item><item><title>Github的PR流程</title><link>https://huyangpahuo.vercel.app/posts/github-de-pr-liu-cheng/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/github-de-pr-liu-cheng/</guid><description>学习如何在github上PR</description><pubDate>Sun, 22 Mar 2026 13:03:55 GMT</pubDate><content:encoded>&lt;h1 id=&quot;我们来学一下如何pr&quot;&gt;我们来学一下如何PR&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#我们来学一下如何pr&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;以我当时第一次PR给&lt;a href=&quot;https://github.com/forever218/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;forever218大佬&lt;/a&gt;的&lt;a href=&quot;https://github.com/forever218/hexo-theme-magzine&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;hexo magzine&lt;/a&gt;主题为例&lt;/p&gt;
&lt;p&gt;&lt;del&gt;虽然我用AI把他的项目改的面目全非,不过大佬每次都接纳了......感觉有时间还得再看看&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;不过确实学到了很多新知识,非常感谢大佬,因为借助他设计的blog我也接触到和吸引到了很多大佬&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;pr用到的相关命令&quot;&gt;PR用到的相关命令&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pr用到的相关命令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;








































































































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;功能&lt;/th&gt;&lt;th&gt;命令（新 Git 写法）&lt;/th&gt;&lt;th&gt;命令（旧 Git 写法）&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;克隆仓库&lt;/td&gt;&lt;td&gt;&lt;code&gt;git clone &amp;#x3C;仓库地址&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;克隆远程仓库到本地&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;进入项目&lt;/td&gt;&lt;td&gt;&lt;code&gt;cd &amp;#x3C;项目文件夹&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;进入本地仓库&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看远程&lt;/td&gt;&lt;td&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;查看 origin/upstream 等远程地址&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;添加上游&lt;/td&gt;&lt;td&gt;&lt;code&gt;git remote add upstream &amp;#x3C;地址&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;第一次配置原作者仓库,地址是HTTPS或SSH&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;修改远程地址&lt;/td&gt;&lt;td&gt;&lt;code&gt;git remote set-url &amp;#x3C;name&gt; &amp;#x3C;地址&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;改 SSH/HTTPS，或更新远程地址,name一般为origin/upstream&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;切换到已有分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git switch dev&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;git checkout dev&lt;/code&gt;&lt;/td&gt;&lt;td&gt;切换本地已有分支&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;创建并切换新分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git switch -c 分支名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;git checkout -b 分支名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;基于当前分支创建新分支并切换过去&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看当前状态&lt;/td&gt;&lt;td&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;查看修改、暂存和分支状态&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看改动内容&lt;/td&gt;&lt;td&gt;&lt;code&gt;git diff&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;查看未暂存的改动&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看暂存区改动&lt;/td&gt;&lt;td&gt;&lt;code&gt;git diff --cached&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;查看已 &lt;code&gt;add&lt;/code&gt; 但未提交的内容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;暂存改动&lt;/td&gt;&lt;td&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;把所有改动加入暂存区&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;提交改动&lt;/td&gt;&lt;td&gt;&lt;code&gt;git commit -m &quot;说明&quot;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;提交到本地仓库&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;拉取远程分支信息&lt;/td&gt;&lt;td&gt;&lt;code&gt;git fetch upstream&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;获取上游分支更新，不合并&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;合并远程分支到本地&lt;/td&gt;&lt;td&gt;&lt;code&gt;git merge upstream/dev&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;把上游 dev 合并到本地分支&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;推送到远程&lt;/td&gt;&lt;td&gt;&lt;code&gt;git push -u origin 分支名&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;&lt;code&gt;-u&lt;/code&gt; 建立跟踪关系，可选；首次推送新分支建议加&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;推送已有分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git push&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;如果分支已和远程跟踪，直接推送即可&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看分支列表&lt;/td&gt;&lt;td&gt;&lt;code&gt;git branch&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;查看本地所有分支，&lt;code&gt;*&lt;/code&gt; 表示当前分支&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看分支和远程跟踪关系&lt;/td&gt;&lt;td&gt;&lt;code&gt;git branch -vv&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;显示本地分支和对应远程分支、最后提交&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看远程分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git branch -r&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;显示远程分支列表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;查看本地 + 远程分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git branch -a&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;显示所有分支&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;删除分支&lt;/td&gt;&lt;td&gt;&lt;code&gt;git branch -d &amp;#x3C;分支&gt;&lt;/code&gt; / &lt;code&gt;git push origin --delete &amp;#x3C;分支&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;同上&lt;/td&gt;&lt;td&gt;清理完成的分支&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;这里有几个注意点&quot;&gt;这里有几个注意点&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这里有几个注意点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;git-push--u-origin-分支名&quot;&gt;&lt;strong&gt;git push -u origin 分支名&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#git-push--u-origin-分支名&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;-u&lt;/code&gt; 等同于 &lt;code&gt;--set-upstream&lt;/code&gt;，用于建立&lt;strong&gt;本地分支和远程分支的跟踪关系&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;git push &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;u origin fix-imagezoom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;这里的意思是：
&lt;ul&gt;
&lt;li&gt;把本地 &lt;code&gt;fix-imagezoom&lt;/code&gt; 分支推到 &lt;code&gt;origin&lt;/code&gt; 上&lt;/li&gt;
&lt;li&gt;同时告诉 Git：以后本地 &lt;code&gt;fix-imagezoom&lt;/code&gt; 默认跟踪远程 &lt;code&gt;origin/fix-imagezoom&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;后续再推送或拉取时，只需要：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt; git push
 git pull
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Git 会自动知道你想推/拉 &lt;code&gt;origin/fix-imagezoom&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果不加 &lt;code&gt;-u&lt;/code&gt;：推送也能成功，但以后每次都得写：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;git push origin fix-imagezoom
git pull origin fix-imagezoom
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;需要遵循的规范---conventional-commits约定式提交&quot;&gt;需要遵循的规范---Conventional Commits（约定式提交）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#需要遵循的规范---conventional-commits约定式提交&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&quot;可能踩到的坑---github多账号ssh混淆&quot;&gt;可能踩到的坑---github多账号ssh混淆&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#可能踩到的坑---github多账号ssh混淆&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于我github有两个账号即&lt;code&gt;huyangpahuo&lt;/code&gt;和&lt;code&gt;funingna-wakawaka&lt;/code&gt;,之前在两个账号都创建了ssh就遇到这个问题&lt;/p&gt;
&lt;p&gt;你可以在&lt;code&gt;C:\Users\用户名\.ssh&lt;/code&gt;找到它们&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;其中有一个&lt;code&gt;config&lt;/code&gt;,用于存储配置&lt;/li&gt;
&lt;li&gt;以及私钥&lt;code&gt;id_rsa&lt;/code&gt;和公钥&lt;code&gt;id_rsa.pub&lt;/code&gt;,用于远程连接(当然名字不一定是这个,默认创建都是id_rsa)&lt;/li&gt;
&lt;li&gt;还有一个&lt;code&gt;known_hosts&lt;/code&gt;,用于在客户端存储已连接过的远程服务器的公钥,从而验证服务器的身份并防止中间人攻击&lt;/li&gt;
&lt;li&gt;有的时候会出现&lt;code&gt;known_hosts.old&lt;/code&gt;文件,一般可以删掉因为这个只是对known_hosts更新后的备份&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个是在git bash里使用如下命令生成的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; user.name &lt;span class=&quot;token string&quot;&gt;&quot;GitHub用户名&quot;&lt;/span&gt;   
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config &lt;span class=&quot;token parameter variable&quot;&gt;--global&lt;/span&gt; user.email &lt;span class=&quot;token string&quot;&gt;&quot;GitHub邮箱&quot;&lt;/span&gt;
ssh-keygen &lt;span class=&quot;token parameter variable&quot;&gt;-t&lt;/span&gt; rsa &lt;span class=&quot;token parameter variable&quot;&gt;-C&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;GitHub邮箱&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当然你也可以验证一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;#查看用户名：&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config user.name

&lt;span class=&quot;token comment&quot;&gt;#查看邮箱：&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; config user.email
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中私钥绝不能泄露,公钥则需要粘贴到github里的ssh配置区&lt;/p&gt;
&lt;p&gt;但是当我们使用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;code&gt;funingna-wakawaka&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;PTY allocation request failed on channel &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
Hi funingna-wakawaka&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; You&apos;ve successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样的也是&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-T&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;code&gt;funingna-wakawaka&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;Hi funingna-wakawaka&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; You&apos;ve successfully authenticated, but GitHub does not provide shell access.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;甚至使用&lt;code&gt;git@github.com:huyangpahuo/hexo-theme-magzine.git&lt;/code&gt;时也是&lt;code&gt;funingna-wakawaka&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我们使用这个打印出所有配置的参数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-G&lt;/span&gt; git@github.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到用的是&lt;code&gt;22&lt;/code&gt;端口而非github默认的&lt;code&gt;443&lt;/code&gt;端口&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;host&lt;/span&gt; github.com
user &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;hostname&lt;/span&gt; github.com
port &lt;span class=&quot;token number&quot;&gt;22&lt;/span&gt;
addressfamily any
batchmode no
canonicalizefallbacklocal &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;..&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这说明一个问题,此时github是自动使用的是&lt;code&gt;funingna-wakawaka&lt;/code&gt;,而我们如果要使用&lt;code&gt;huyangpahuo&lt;/code&gt;的账号就不能再使用&lt;code&gt;git@github.com&lt;/code&gt;这种写法&lt;/p&gt;
&lt;h3 id=&quot;解决方法&quot;&gt;解决方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#解决方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不过假设你和我一样不小心配置了一堆github ssh甚至对应的账号不同例如&lt;code&gt;rsa_second&lt;/code&gt;,&lt;code&gt;rsa_third&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;ssh-keygen &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;t rsa_second &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;C &lt;span class=&quot;token string&quot;&gt;&quot;GitHub邮箱&quot;&lt;/span&gt;
ssh-keygen &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;t rsa_third &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;C &lt;span class=&quot;token string&quot;&gt;&quot;GitHub邮箱&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;那么就需要修改&lt;code&gt;config&lt;/code&gt;文件(如果你只有一个那就不用改默认即可)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# Global defaults (safe)&lt;/span&gt;
Host *
  ServerAliveInterval &lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;
  ServerAliveCountMax &lt;span class=&quot;token number&quot;&gt;120&lt;/span&gt;
  AddKeysToAgent no
  IdentitiesOnly &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Account 1: funingna-wakawaka&lt;/span&gt;
Host github-funingna
  HostName ssh.github.com
  Port &lt;span class=&quot;token number&quot;&gt;443&lt;/span&gt;
  User &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt;
  IdentityFile ~/.ssh/id_rsa           &lt;span class=&quot;token comment&quot;&gt;# funingna key&lt;/span&gt;
  IdentitiesOnly &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Account 2: huyangpahuo&lt;/span&gt;
Host github-huyang-01
  HostName ssh.github.com
  Port &lt;span class=&quot;token number&quot;&gt;443&lt;/span&gt;
  User &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt;
  IdentityFile ~/.ssh/id_rsa_second    &lt;span class=&quot;token comment&quot;&gt;# huyang key &lt;/span&gt;
  IdentitiesOnly &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# Account 3: huyangpahuo&lt;/span&gt;
Host github-huyang-02
  HostName ssh.github.com
  Port &lt;span class=&quot;token number&quot;&gt;443&lt;/span&gt;
  User &lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt;
  IdentityFile ~/.ssh/id_rsa_third    &lt;span class=&quot;token comment&quot;&gt;# huyang key &lt;/span&gt;
  IdentitiesOnly &lt;span class=&quot;token function&quot;&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;相关参数&quot;&gt;相关参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#相关参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;






















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;参数&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;th&gt;当前的值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Host&lt;/code&gt;&lt;/td&gt;&lt;td&gt;定义一组连接规则/别名&lt;/td&gt;&lt;td&gt;&lt;code&gt;*&lt;/code&gt;、&lt;code&gt;github-funingna&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;HostName&lt;/code&gt;&lt;/td&gt;&lt;td&gt;真正要连接的服务器地址&lt;/td&gt;&lt;td&gt;&lt;code&gt;ssh.github.com&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;Port&lt;/code&gt;&lt;/td&gt;&lt;td&gt;SSH 连接端口&lt;/td&gt;&lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;User&lt;/code&gt;&lt;/td&gt;&lt;td&gt;登录时使用的用户名&lt;/td&gt;&lt;td&gt;&lt;code&gt;git&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;IdentityFile&lt;/code&gt;&lt;/td&gt;&lt;td&gt;指定使用的 SSH 私钥&lt;/td&gt;&lt;td&gt;&lt;code&gt;~/.ssh/id_rsa&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;IdentitiesOnly&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否只使用明确指定的密钥&lt;/td&gt;&lt;td&gt;&lt;code&gt;yes&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ServerAliveInterval&lt;/code&gt;&lt;/td&gt;&lt;td&gt;多久发送一次 SSH 保活请求&lt;/td&gt;&lt;td&gt;&lt;code&gt;30&lt;/code&gt; 秒&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;ServerAliveCountMax&lt;/code&gt;&lt;/td&gt;&lt;td&gt;保活失败多少次后断开&lt;/td&gt;&lt;td&gt;&lt;code&gt;120&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;AddKeysToAgent&lt;/code&gt;&lt;/td&gt;&lt;td&gt;是否自动把私钥加入 SSH Agent&lt;/td&gt;&lt;td&gt;&lt;code&gt;no&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里我分别为三个ssh取别名为&lt;code&gt;github-funingna&lt;/code&gt; ,&lt;code&gt;github-huyang-01&lt;/code&gt;,&lt;code&gt;github-huyang-02&lt;/code&gt;表示这是&lt;code&gt;github&lt;/code&gt;的ssh&lt;/p&gt;
&lt;p&gt;并分别指定对应的私钥文件&lt;/p&gt;
&lt;h3 id=&quot;ssh验证&quot;&gt;ssh验证&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ssh验证&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们必须用&lt;code&gt;git@github-huyang-01:huyangpahuo/hexo-theme-magzine.git&lt;/code&gt;这种指定别名的方式才能验证&lt;/p&gt;
&lt;p&gt;我们可以用ssh验证&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; git@github-huyang-01
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;code&gt;huyangpahuo&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;PTY allocation request failed on channel &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
Hi huyangpahuo&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt; You&apos;ve successfully authenticated, but GitHub does not provide shell access.
Connection to ssh.github.com closed.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;也就是我们要使用的这个&lt;/p&gt;
&lt;h2 id=&quot;pr实例&quot;&gt;PR实例&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pr实例&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这里我们分成好几种情况,由于这个仓库有两个分支,一个叫做master(主分支),一个叫做dev(实验分支)&lt;/p&gt;
&lt;p&gt;主分支是正式版本,副分支为实验版本&lt;/p&gt;
&lt;h2 id=&quot;首先先复刻仓库并clone复刻仓库的项目到本地&quot;&gt;首先先复刻仓库并clone复刻仓库的项目到本地&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先先复刻仓库并clone复刻仓库的项目到本地&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 克隆你 fork 的仓库&lt;/span&gt;
git clone git@github-huyang-01:huyangpahuo/hexo-theme-magzine&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;git
cd hexo-theme-magzine

&lt;span class=&quot;token comment&quot;&gt;# 添加 upstream（原作者仓库）&lt;/span&gt;
git remote add upstream git@github-huyang-01:forever218/hexo-theme-magzine&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;git

&lt;span class=&quot;token comment&quot;&gt;# 查看远程仓库是否正确&lt;/span&gt;
git remote &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;v
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;一pr到原作者仓库的mainmaster主分支例如master&quot;&gt;一,PR到原作者仓库的Main/Master主分支(例如Master)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一pr到原作者仓库的mainmaster主分支例如master&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&quot;二pr到原作者仓库的其他副分支例如dev&quot;&gt;二,PR到原作者仓库的其他副分支(例如Dev)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二pr到原作者仓库的其他副分支例如dev&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;-只同步和维护自己-fork-的分支例如dev&quot;&gt;① 只同步和维护自己 fork 的分支(例如dev)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-只同步和维护自己-fork-的分支例如dev&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;情况-a本地和远程都没有同步第一次更新或本地删除过&quot;&gt;情况 A：本地和远程都&lt;strong&gt;没有同步&lt;/strong&gt;（第一次更新或本地删除过）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#情况-a本地和远程都没有同步第一次更新或本地删除过&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 创建并切换到本地 dev，跟踪 upstream/dev&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;c dev &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;track upstream/dev
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout -b dev --track upstream/dev&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 把本地 dev 推到你的 fork（第一次）&lt;/span&gt;
git push &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;u origin dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;情况-b本地-dev-已经存在远程-fork-dev-已同步继续维护&quot;&gt;情况 B：本地 dev 已经存在，&lt;strong&gt;远程 fork dev 已同步&lt;/strong&gt;（继续维护）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#情况-b本地-dev-已经存在远程-fork-dev-已同步继续维护&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 切换到本地 dev&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; dev
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout dev&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 拉取 upstream 最新 dev&lt;/span&gt;
git fetch upstream
git merge upstream/dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后修改上传到自己复刻的仓库&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# --- 开始开发 ---&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# 修改项目文件&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 改完查看状态&lt;/span&gt;
git status
git &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;# 可选：查看未暂存改动&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 暂存改动&lt;/span&gt;
git add &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 查看已暂存内容（可选）&lt;/span&gt;
git &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;cached

&lt;span class=&quot;token comment&quot;&gt;# 提交到本地 dev&lt;/span&gt;
git commit &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;m &lt;span class=&quot;token string&quot;&gt;&quot;更新说明&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 推送到你的 fork dev&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;-给作者发-pr-的流程&quot;&gt;② 给作者发 PR 的流程&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-给作者发-pr-的流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h5 id=&quot;情况-a本地和远程都没有同步第一次做-pr&quot;&gt;情况 A：本地和远程都&lt;strong&gt;没有同步&lt;/strong&gt;（第一次做 PR）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#情况-a本地和远程都没有同步第一次做-pr&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 创建并切换本地 dev&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;c dev &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;track upstream/dev
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout -b dev --track upstream/dev&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 更新到最新 dev&lt;/span&gt;
git fetch upstream
git merge upstream/dev
git push &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;u origin dev   &lt;span class=&quot;token comment&quot;&gt;# 更新 fork 的 dev（可选）&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 基于最新 dev 创建新功能分支&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;c 你的新分支名
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout -b 你的新分支名&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h5 id=&quot;情况-b本地-dev-已存在远程-fork-dev-已同步继续做-pr&quot;&gt;情况 B：本地 dev 已存在，远程 fork dev 已同步（继续做 PR）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#情况-b本地-dev-已存在远程-fork-dev-已同步继续做-pr&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 切换到本地 dev&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; dev
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout dev&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 拉取 upstream 最新 dev&lt;/span&gt;
git fetch upstream
git merge upstream/dev

&lt;span class=&quot;token comment&quot;&gt;# 基于 dev 创建新功能分支&lt;/span&gt;
git &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;c 你的新分支名
&lt;span class=&quot;token comment&quot;&gt;# 老写法：git checkout -b 你的新分支名&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后修改上传&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# --- 开始开发 ---&lt;/span&gt;
git status
git &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt;

git add &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;
git &lt;span class=&quot;token function&quot;&gt;diff&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;cached
git commit &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;m &lt;span class=&quot;token string&quot;&gt;&quot;更新说明&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;# 推送功能分支到 fork&lt;/span&gt;
git push &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;u origin 你的新分支名
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;上传之后若作者合并了,此时可以在github里删除掉这个分支,然后更新自己复刻的仓库即可&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;bash&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;# 在 GitHub 上发 PR，PR 合并后删分支,当然最好在Github里删除,不要使用命令行&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; switch dev  &lt;span class=&quot;token comment&quot;&gt;#切到dev分支&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; branch &lt;span class=&quot;token parameter variable&quot;&gt;-d&lt;/span&gt; 你的新分支名         &lt;span class=&quot;token comment&quot;&gt;# 删除本地分支&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;git&lt;/span&gt; push origin &lt;span class=&quot;token parameter variable&quot;&gt;--delete&lt;/span&gt; 你的新分支名 &lt;span class=&quot;token comment&quot;&gt;# 删除远程分支&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>Git</category><category>Git</category><category>Github</category><category>PR</category></item><item><title>NyarchLinux使用</title><link>https://huyangpahuo.vercel.app/posts/nyarchlinux-shi-yong/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/nyarchlinux-shi-yong/</guid><description>本篇使用NyarchLinux</description><pubDate>Sun, 15 Mar 2026 22:51:37 GMT</pubDate><content:encoded>&lt;h1 id=&quot;nyarchlinux使用&quot;&gt;NyarchLinux使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#nyarchlinux使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;首先虚拟机只要1个处理器,每个处理器4个核就够了,内存4GB,磁盘60GB&lt;/p&gt;
&lt;h2 id=&quot;下载中文输入法&quot;&gt;下载中文输入法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载中文输入法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;中文输入法需要自己下载&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; pacman &lt;span class=&quot;token parameter variable&quot;&gt;-S&lt;/span&gt; fcitx5 fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-chinese-addons
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;下载完成后&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/NyarchLinux%E4%BD%BF%E7%94%A8/image-20260316113707717.webp&quot; alt=&quot;image-20260316113707717&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点开这个,一般情况下不需要管,因为这个自动会为你配置好&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/NyarchLinux%E4%BD%BF%E7%94%A8/image-20260316113807046.webp&quot; alt=&quot;image-20260316113807046&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;切换输入法的快捷键是ctrl + space&lt;/p&gt;
&lt;h2 id=&quot;下载clashverge-linux&quot;&gt;下载ClashVerge Linux&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载clashverge-linux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;同步仓库数据库先运行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; pacman &lt;span class=&quot;token parameter variable&quot;&gt;-Sy&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这一步会下载所有软件仓库索引&lt;/p&gt;
&lt;p&gt;安装依赖然后再运行：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;&lt;span class=&quot;token function&quot;&gt;sudo&lt;/span&gt; pacman &lt;span class=&quot;token parameter variable&quot;&gt;-S&lt;/span&gt; libayatana-appindicator
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;重新安装 Clash Verge&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5 9H7.31L7.63 6H9.63L9.31 9H11.31L11.63 6H13.63L13.31 9H15V11H13.1L12.9 13H15V15H12.69L12.37 18H10.37L10.69 15H8.69L8.37 18H6.37L6.69 15H5V13H6.9L7.1 11H5V9M9.1 11L8.9 13H10.9L11.1 11M19 6H17V14H19M19 16H17V18H19Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;shell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-shell&quot;&gt;yay &lt;span class=&quot;token parameter variable&quot;&gt;-S&lt;/span&gt; clash-verge-rev-bin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Linux/NyarchLinux%E4%BD%BF%E7%94%A8/image-20260315231308416.webp&quot; alt=&quot;image-20260315231308416&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Linux</category><category>NyarchLinux</category><category>Linux</category></item><item><title>Hexo小桌宠的制作</title><link>https://huyangpahuo.vercel.app/posts/hexo-xiao-zhuo-chong-de-zhi-zuo/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/hexo-xiao-zhuo-chong-de-zhi-zuo/</guid><description>把B站乌龙茶速递大佬的爱丽丝转换为hexo桌宠</description><pubDate>Fri, 13 Mar 2026 16:49:30 GMT</pubDate><content:encoded>&lt;h1 id=&quot;原版本是用godot-43制作的一个windows小桌宠&quot;&gt;原版本是用godot 4.3制作的一个Windows小桌宠&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#原版本是用godot-43制作的一个windows小桌宠&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;然后我用gdre_tools反编译后一直很头疼,不知道如何做到从游戏引擎到浏览器的实现,虽然godot完全可以导出web游戏,只是试了一下效果不太好&lt;/p&gt;
&lt;p&gt;最终还是决定只提取序列帧图,然后用提示词让ai实现&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;我希望将这个桌宠转换为Hexo的内置的插件,我希望将桌宠的每一个功能解耦分成模块化的多个代码文件,并且将桌宠相关的所有文件都放到一个文件夹,比如在hexo的themes文件夹里的layout文件夹里的_partial文件夹里新建一个pet文件夹,这里面就是代码文件,然后桌宠相关的所有图片文件都放到themes文件夹里的source文件夹里的images文件夹里的pet文件夹里,代码最好加上中文注释方便我看懂

首先第一个文件模块就是负责角色序列帧的播放,角色拥有四个状态分别是

IDLE(静止状态),对应images文件夹里的pet文件夹里的命名为01-04的4张png图片

RUNNING(奔跑状态),对应images文件夹里的pet文件夹里的命名为05-08的4张png图片

DRAGGING(拖动角色状态),对应images文件夹里的pet文件夹里的命名为09-12的四张png图片

FALL(拖动角色后放下角色的状态),对应images文件夹里的pet文件夹里的命名为05-08的四张png图片

注意:我提供的所有角色序列帧角色的站姿都是竖直的,除了DRAGGING,其他状态角色必须始终是竖直的,不要发生方向偏移,就像2D平台跳跃游戏里的角色那样

---

第二个文件模块负责角色动画逻辑和鼠标的交互逻辑,每个状态都放到一个独立的函数里

①角色的初始状态是IDLE,也就是速度为0的状态,首先需要注意就是明确角色的正反面,我提供的角色所有状态的序列帧的图片都是朝向左侧的,也就是说,角色初始状态就是朝左侧的,也就是说,当我的鼠标在屏幕中角色的坐标X轴左侧时,角色播放朝向为左的状态也就是默认的状态,但是当我的鼠标在屏幕中角色的坐标X轴右侧时,将角色相关的序列帧图片全部翻转(类似游戏引擎中将角色对象镜像翻转),注意,当鼠标距离角色一定距离时(即以角色为中心往外延伸的长方形区域),为了方便调试,我需要给这个区域上颜色,实验完成还能注释掉,当鼠标进入这个区域后角色会处于IDLE状态,但是角色还能检测到鼠标是在角色左边还是右边



②角色的奔跑状态就是RUNNING,注意,角色需要有加速度,当鼠标离开长方形检测区域后,角色开始朝鼠标的位置移动(方向就是计算角色中心点和鼠标坐标点算出要移动的方向),角色方向保持竖直,角色由静止状态转换为奔跑状态时会先加速,再匀速,在鼠标进入长方形检测区域后减速至停止,对了,有一个小细节就是比如角色此时正在朝左奔跑,我的鼠标在左侧,但是如果我立刻将鼠标移动到右侧,角色的朝向不会立刻改变,而是先保持原来的朝向减速至停止状态时再改变朝向奔跑



③角色的拖拽状态就是DRAGGING,这个就是当我把鼠标指针放到角色上并点击鼠标左键就可以拖动角色,这里是一个巧妙设计,逻辑比较复杂:

(1)以角色的中心点的y轴上方,也就是序列帧图片角色对象的正中心的正上方的边界位置作为挂载点B,角色对象整体的位置此时由挂载点B决定,当我点击角色并长按鼠标左键时,此时鼠标指针变成了牵引点A,在点击角色时角色会往上跳一下,然后角色快速下降,B点和鼠标的A点重合停止,然后A与B之间就像有一个短短的无形的弹力绳子,绳子具有弹性系数,当拖拽角色时,挂载点B始终想和牵引点A合并,会主动向A靠近,

(2)此时需要记录鼠标当前的坐标和鼠标的移动速度,当鼠标移动速度逐渐加快时,绳子的长度遵循弹力变长,同理鼠标开始减速时绳子逐渐变短,当鼠标匀速时,需要计算根据当前鼠标的速度计算来确定绳子的长短,此时绳子的长度不变,然后此时我不要求角色必须保持竖直了,不过分为两种情况:

第一, 角色整体以B点为头部牵引点,我就这么比喻吧,如果角色本体是一个秤砣,B点就是秤砣顶部算绳子的部分,当我拉动绳子的另一端(也就是鼠标的A点)时,秤砣会改变自身方向(对了,序列帧图片的方向也要改变,不仅仅是移动的方向)跟着B点一起运动就像贪吃蛇一样,

第二, 但是假如我只是在角色上面长按鼠标左键而不拖动角色,此时需要角色以B点为轴,以当前的角色的朝向为准,如果鼠标拽着角色向左移动,角色朝向是左,向右拖动角色朝向右,如果此时角色朝向为左,那么角色向左30度轻轻来回晃动,如果此时角色朝向为右,那么角色向右30度轻轻来回晃动(代表挣扎的动作)

(3)这里增加一个比较好玩的效果,当我点击一下角色而不捉住它,此时角色会向旁边“逃跑”,逃跑的逻辑和跑步一样,但是马上还会回来追鼠标

④ 角色的降落状态就是FALL,当鼠标拖拽角色松手后(也就是松开鼠标左键),角色的整体会掉落到角色的中心y轴的正下方的离中心不远处的一段距离的位置,就好像角色获得了重力,掉落一小段距离,掉落的高度约等于精灵图序列帧的高度

---

第三个文件模块就是角色的头发,这个你参考我给你的代码抄下来,这个我无法描述,总之你可以把头发想像成一个软软的橡皮泥,角色静止状态时头发从上到下还会蠕动,角色移动和被鼠标拖拽时头发还有物理逻辑,头发的颜色是#565a73

---

第四个文件模块就是角色的图层管理,这里不仅管理图层,还管理角色头发位置还有头上的光环和脚下的影子以及角色的汗珠逻辑 ,这里角色精灵图序列帧和汗水图层最高,然后就是头发在第二级图层,光环和影子在第三图层,角色跑动出现的粒子效果位于最底层

光环的是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的halo.png文件,以角色中心y轴为对称轴,角色中心为原点,当角色朝向为左边时,此时光环halo的位置即角色的右上方也就是第一象限的位置大概(12,7),当角色朝向右边时,环halo的位置即角色的左上方也就是第四象限的位置(大概(-12,-7)),光环以自己的图片的中心旋转27.4度,光环图片缩放0.25倍

汗水的图片分为两个,分别是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的sweat.png和sweat_L.png,

汗水的位置分为两部分,分别是当角色朝向为左时,汗水在以角色中心点建坐标的第四象限(-12,-26)(-14,-21)(-12,-17)三个位置是sweat_L.png汗水图片,当角色朝向为右时,汗水在以角色中心点建坐标的第一象限(12,26)(14,21)(12,17)三个位置是sweat.png汗水图片,默认是不会显示汗水的,只有角色处于DRAGGING状态,才会出现而且是三个同时出现,同时消失,向外呈放射状移动,生命周期是0.2秒,重复出现,当角色解除DRAGGING状态时才不会出现

影子的的图片为themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的shadow.png文件,图片阿尔法值193,缩放0.5倍,影子的图片中心位于角色的中心点y轴的底部位置,当角色处于DRAGGING状态时,预测角色处于FALL状态的掉落的位置,影子在角色处于DRAGGING状态时提前移动到这个位置

角色跑动的粒子效果的单个粒子图片的位置是themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的smoke.png文件,

粒子的生命周期0.8秒,每次出现6个粒子,粒子每次都出现在角色的中心点y轴的底部位置,而且粒子的大小和阿尔法值都不同(而且越靠近角色的粒子透明度越高),类似于我的世界烟花的尾炎逻辑

---

第五个文件的逻辑是掌管角色跑步音效的,当角色处于RUNNING状态时播放themes文件夹里的source文件夹里的images文件夹里的pet文件夹里的RunSounds.wav音效,重复播放

---

第六个文件掌管角色白色描边逻辑,这里你可以参考pet.pug文件里的写法

------------------

后续提示词的battle.....

------------------
非常好,接下来你只需要改这几个地方,第一个就是将角色和光环的比例缩放到0.3倍,角色的移动速度也是降低到原来的0.3倍,头发相关的代码不要动,将sweat.png和sweat_L.png的透明度改为原来的40%,将影子的图层改为最底层,粒子的大小控制在16*16大小左右,最大不超过16×16,最小可以是2×2,然后粒子之间的间隔拉大,粒子随着移动过的轨迹排列,对于声音的话,鼠标右键点击桌宠会弹出两个小按钮“静音”和音量控制

---

非常好,现在将光环的大小缩放8倍,并把光环放到当前光环位置的以角色中心为竖直对称轴的镜像位置,影子的大小等比例放大,让影子的宽度等于角色的宽度,还有就是我发现点击阅读文章时界面上回出现两个桌宠,我希望界面上有且只有一个桌宠,同时增加两个模块,

第一个模块就是聊天模块,角色会弹出一个聊天气泡框,里面角色说的话可以自定义,不过有状态检测,当角色处于DRAGGING状态时,角色会说“放开我!!!”“救命啊!!!”“我讨厌你~呜呜”,当只左键点击角色一次时角色会说“不要老是戳我呀”,当右键点击角色时角色会说“不要右键点我听到没有”,当角色处于FALL状态时会说“哼”“哎呀”,当玩家超过一分钟没有点击角色时,角色会说“你怎么不理我了”“快点和我说话”“我好无聊啊”“老师我想听歌”“我好困啊”“可以放首歌吗我想听歌!!!”,说话每次一句,说完气泡消失,再次说的时候又会出现气泡框

第二个模块就是音乐播放器,这个是需要外置的音乐源来播放歌曲,你看看有没有日语二次元歌曲的音乐源,右键角色的窗口里,在“取消静音”按钮上增加一个圆形按钮,这个圆形按钮上的图像就是音乐源自动获取的音乐的封面,可以切换音乐,点击上一首,下一首,暂停,循环播放,还可以控制音量,这里的音量名字就叫“音乐音量”,而之前的脚本里控制角色跑步音效的叫“角色音效”

---

不行,角色翻转方向时还是会出现气泡框翻转,这里气泡框不要翻转

---

非常好,你可以看到,我的文章点开时是出现在一个独立的窗口的,但是每当我点开一个新文章时,桌面上就会新出现一只桌宠,这就导致了界面有两个桌宠,但是我只要一只就够了,我不知道是哪里的问题,你看看

---

很好,但是我发现在文章界面的桌宠无法像主界面出现的桌宠一样,状态和行为存在一点问题不知道为什么
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;当然也是废话了几千字,ai好歹听懂了,当然用的是github的学生免费额度(反正不用也是不用还不如做点东西)&lt;/p&gt;</content:encoded><category>Hexo</category><category>Hexo</category></item><item><title>lua---数组和迭代器</title><link>https://huyangpahuo.vercel.app/posts/lua-shu-zu-he-die-dai-qi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/lua-shu-zu-he-die-dai-qi/</guid><description>学习lua的数组和迭代器</description><pubDate>Tue, 10 Mar 2026 15:48:22 GMT</pubDate><content:encoded>&lt;h1 id=&quot;我们继续来学一些东西&quot;&gt;我们继续来学一些东西&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#我们继续来学一些东西&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;多维数组&quot;&gt;多维数组&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#多维数组&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;数组这东西咱们之前其实已经学过了,基本上没什么说的了,因为lua里面数组字典都是一个东西&lt;/p&gt;
&lt;p&gt;但是有一个东西不得不提那就是table的数组的一面的多维数组性&lt;/p&gt;
&lt;p&gt;说人话就是和其他语言一样,lua的数组也可以嵌套,而且用法一模一样&lt;/p&gt;
&lt;h3 id=&quot;二维数组&quot;&gt;二维数组&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二维数组&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; matrix &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 1&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 6&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 8&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;matrix &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;matrix&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%95%B0%E7%BB%84%E5%92%8C%E8%BF%AD%E4%BB%A3%E5%99%A8/image-20260310180344743.webp&quot; alt=&quot;image-20260310180344743&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;三维数组&quot;&gt;三维数组&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三维数组&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cube &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;cube &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;layer&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;cube&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;cube&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cube&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E6%95%B0%E7%BB%84%E5%92%8C%E8%BF%AD%E4%BB%A3%E5%99%A8/image-20260310180446020.webp&quot; alt=&quot;image-20260310180446020&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;递归遍历仅仅数组&quot;&gt;递归遍历(仅仅数组)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#递归遍历仅仅数组&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;由于只用for循环遍历数组的话,治标不治本,数组每深一层,for循环就要加一层,很麻烦&lt;/p&gt;
&lt;p&gt;所以用ipairs迭代器遍历就可以简化&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- t        当前遍历的数组&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- callback 处理叶子数据的函数&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- path     记录当前路径&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;walkArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; callback&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; path &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;-- 只遍历数组：从 1 开始，遇到 nil 停止&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;-- 还是数组，继续往里递归&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;walkArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; callback&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;-- 到达叶子，执行回调&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;-- 回溯：删除最后一个路径&lt;/span&gt;
        path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;walkPrint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;walkArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;index &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot; = &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
en
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;使用&quot;&gt;使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--三维数组&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cube &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;--第一层&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;--第二层&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;--第三层&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;--第三层&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;--第二层&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;--第三层&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;--第三层&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;token number&quot;&gt;12&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;walkPrint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cube&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;不过这个只适用于数组而非字典&lt;/p&gt;
&lt;p&gt;但是对于字典要特别注意,前面也就是&lt;strong&gt;lua---基本语法和关键字&lt;/strong&gt;那一篇我们讲过了字典没有1,2,3,4,...这样的索引,但是有键值对&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; arr &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;c&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 等价于&lt;/span&gt;
arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;
arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;b&quot;&lt;/span&gt;
arr&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;c&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; dict &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; version &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5.4&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 等价于&lt;/span&gt;
dict&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Lua&quot;&lt;/span&gt;
dict&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;version&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5.4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后就是&lt;strong&gt;lua---循环和条件语句&lt;/strong&gt;这一篇我们知道了&lt;code&gt;ipairs&lt;/code&gt;循环的特性:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;遇到 nil(即遇到空值断层) 后会停止遍历,而且遍历时遇到键值对会自动跳过&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以及for循环只能用于数组,所以我们只能用&lt;code&gt;pairs&lt;/code&gt;无序遍历字典(这算lua的缺陷还是优点?)&lt;/p&gt;
&lt;h3 id=&quot;递归遍历适用于数组和字典&quot;&gt;递归遍历(适用于数组和字典)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#递归遍历适用于数组和字典&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;由于我们已知pairs是无序的,所以我们需要做的操作是给定规则让其看似有序&lt;/p&gt;
&lt;p&gt;例如我们这里的规则是&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;先用 &lt;code&gt;pairs&lt;/code&gt; 把字典的键全部收进一个数组（此时顺序不保证），&lt;/strong&gt;&lt;code&gt;defaultSort&lt;/code&gt; 的规则是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;先按类型排序：数字 &amp;#x3C; 字符串 &amp;#x3C; 布尔 &amp;#x3C; 其他；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;同类型内再比较：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;数字按数值大小；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;字符串按字典序（逐字节比较）；&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;布尔按 &lt;code&gt;tostring&lt;/code&gt; 比较，&lt;code&gt;&quot;false&quot; &amp;#x3C; &quot;true&quot;&lt;/code&gt;，所以 &lt;code&gt;false&lt;/code&gt; 在前，&lt;code&gt;true&lt;/code&gt; 在后&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后按这个顺序输出&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; typeRank &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; number &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; string &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; boolean &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;defaultSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; ta&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tb &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; ta &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; tb &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; ta &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;number&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; ta &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;string&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; b
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; ra &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; typeRank&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;ta&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; rb &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; typeRank&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;tb&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; ra &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; rb &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ra &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; rb
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;copyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; p &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        p&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; p
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; parts &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;string&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            parts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;[&quot;&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; k &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;&quot;]&apos;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            parts&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;]&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;parts&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;walkArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; callback&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    options            &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; order        &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;order &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; includeEmpty &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;includeEmpty &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; detectCycle  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;detectCycle &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; onCycle      &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;onCycle
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; sort         &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;sort &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; defaultSort

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; visiting     &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;keysOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; keys &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            keys&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;keys &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; order &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keys&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sort&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; keys
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;walk&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;copyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; detectCycle &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; visiting&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; onCycle &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;onCycle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;copyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        visiting&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; keys &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;keysOf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;keys &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; includeEmpty &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;copyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; _&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; k &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;keys&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
            path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; k

            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;walk&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;callback&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;copyPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

            path&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        visiting&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;cur&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    &lt;span class=&quot;token function&quot;&gt;walk&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;walkPrint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;walkArray&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pathStr&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; pathStr &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pathStr &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; = &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;使用-1&quot;&gt;使用&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;我们可以验证一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; t4 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    z &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;z3&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;z1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;z2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;zb&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;za&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;a10&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;a2&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;x&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;ax&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;walkPrint&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t4&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;得到&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a2
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a10
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;x&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ax
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; z1
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; z2
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; z3
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; za
&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; zb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;迭代器&quot;&gt;迭代器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#迭代器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;迭代器就是一个&quot;每次调用都给你下一个值&quot;的函数。&lt;/strong&gt; &lt;code&gt;for&lt;/code&gt; 循环负责反复调用它，直到它返回 &lt;code&gt;nil&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;迭代器包括&lt;code&gt;无状态的迭代器&lt;/code&gt;,&lt;code&gt;多状态的迭代器&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;其中前面说的遍历表的&lt;code&gt;ipairs&lt;/code&gt;和&lt;code&gt;pairs&lt;/code&gt;这些东西即&lt;code&gt;泛型 for 迭代器&lt;/code&gt;也就是&lt;code&gt;无状态迭代器&lt;/code&gt;的一种&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;无状态的迭代器stateless-iterator&quot;&gt;无状态的迭代器（stateless iterator）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#无状态的迭代器stateless-iterator&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;无状态&lt;/strong&gt;：迭代函数本身不保存任何内部状态，它只依赖两个输入：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;状态(state)常量&lt;/strong&gt;（通常是固定的数据集合，比如表）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制(control)变量&lt;/strong&gt;（循环中表示当前位置的索引或计数器）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;循环机制&lt;/strong&gt;：每一次迭代，Lua 都调用迭代函数 &lt;code&gt;f(state, control)&lt;/code&gt;，由迭代函数返回下一个元素&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt; : 第一个返回值既是循环变量，又会成为下一轮的 &lt;code&gt;c&lt;/code&gt;；它是 &lt;code&gt;nil&lt;/code&gt; 就停止&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优势&lt;/strong&gt;：不需要闭包开销，效率高，适合简单、固定的序列遍历&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; var1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; var2 &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- 循环体&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;in&lt;/code&gt; 后面有三个东西：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;名字&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;f&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;迭代函数，每轮被调用一次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;s&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;状态（state），每次原样传给 &lt;code&gt;f&lt;/code&gt;，通常是要遍历的表或上限&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;code&gt;c&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;控制变量（control）的初始值，也就是&quot;从哪开始&quot;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;等价于&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; f&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;-- 先算出这三个值&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; var1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; var2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 每轮调用 f(s, c)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; var1 &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 第一个返回值是 nil，循环结束&lt;/span&gt;
    c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; var1                   &lt;span class=&quot;token comment&quot;&gt;-- 第一个返回值成为下一轮的 c&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- 循环体&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里我们可以举两个例子:&lt;/p&gt;
&lt;h4 id=&quot;例一&quot;&gt;例一&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#例一&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- 无状态迭代器&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;iter&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;-- n 是 s，i 是 c&lt;/span&gt;
    i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; n &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; i            &lt;span class=&quot;token comment&quot;&gt;-- 返回值成为下一轮的 i&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;                     &lt;span class=&quot;token comment&quot;&gt;-- 超过 n 就什么都不返回（即 nil），循环结束&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; iter&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;-- f=iter, s=5, c=0&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;                &lt;span class=&quot;token comment&quot;&gt;-- 1 2 3 4 5&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

解析：
iter 是迭代器函数，每次被调用时接收两个参数：
	n（state）
	i（上一次返回的值，初始是 &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;）

返回下一个值，直到返回 &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; 时循环结束

特点：迭代器本身不记状态，状态由循环外部传递进来
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;例二&quot;&gt;例二&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#例二&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;square&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;max&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cur &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; max &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        cur &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cur &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; cur   &lt;span class=&quot;token comment&quot;&gt;-- 第一个值是新的 cur，第二个值是平方&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sq &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; square&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sq&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;-- 1 1 / 2 4 / 3 9&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

解析：

迭代函数：&lt;span class=&quot;token function&quot;&gt;square&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;max&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cur&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
每次被调用，传入状态常量 max（最大迭代次数）和控制变量 cur（上一次返回的值）

返回值：返回下一个索引和它的平方 square

Lua 的 &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; 循环会不断调用 square，直到返回 &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; 停止
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;ipairst-和-pairst&quot;&gt;&lt;code&gt;ipairs(t)&lt;/code&gt; 和 &lt;code&gt;pairs(t)&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ipairst-和-pairst&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;我们可以剖析一下这两种排序函数,可以看到返回值就是我上述例子的&lt;code&gt;f &lt;/code&gt;,&lt;code&gt;s&lt;/code&gt;,&lt;code&gt;c&lt;/code&gt;格式&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;-- 返回(ipairs内部封装的迭代函数, t, 0)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;-- 返回 (next, t, nil)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;所以下面两种写法是等价的：&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; ipairs内部封装的迭代函数&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; next&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;next&lt;/code&gt; 就是无状态迭代函数：它不记任何东西，每次靠传入的 &lt;code&gt;(t, 上一个key)&lt;/code&gt; 找下一个键值对&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;














&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;函数&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;返回什么&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;next(t, k)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;k2, v2&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;遍历所有键，顺序不保证。&lt;code&gt;k&lt;/code&gt; 为 &lt;code&gt;nil&lt;/code&gt; 时从头开始&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;至于ipairs内部封装的迭代函数没有暴露成全局变量,我们无从得知也无法使用&lt;/p&gt;
&lt;p&gt;但是逻辑应该类似于&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairsaux&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; v &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v
  &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;有序和无序的区别&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;&lt;code&gt;ipairs&lt;/code&gt;&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;&lt;code&gt;pairs&lt;/code&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;遍历范围&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;从索引 1 开始，依次 1, 2, 3…&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;表里所有键值对&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;顺序&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;保证按索引递增&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;不保证顺序&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;何时停止&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;遇到第一个 &lt;code&gt;nil&lt;/code&gt; 就停&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;遍历完所有键&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;多状态的迭代器stateful-iterator&quot;&gt;多状态的迭代器（stateful iterator）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#多状态的迭代器stateful-iterator&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;多状态&lt;/strong&gt;：迭代器需要维护多个状态，可能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前索引&lt;/li&gt;
&lt;li&gt;集合长度&lt;/li&gt;
&lt;li&gt;缓存数据&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实现方式&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;闭包&lt;/strong&gt;：迭代函数内保存状态变量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;表封装状态&lt;/strong&gt;：状态信息放在 table 中，迭代函数每次读取&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：迭代器自己记住状态(用闭包把状态&quot;藏&quot;在迭代函数内部)， &lt;code&gt;for&lt;/code&gt; 后面只需要写一个函数调用，不用再传 状态变量&lt;code&gt;s&lt;/code&gt; 和控制变量 &lt;code&gt;c&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;例一-1&quot;&gt;例一&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#例一-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个也就是我们上面递归遍历键值对的原理之一&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;next_pair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; key &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; t&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;a&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;next_pair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--a       1&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--b       2&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--c       3&lt;/span&gt;

解析：

&lt;span class=&quot;token function&quot;&gt;next_pair&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 返回一个闭包函数，这个闭包保存了内部状态（key）。

每次调用闭包，都会从表中取下一个键值对。

循环结束条件是闭包返回 &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;。

特点：迭代器自己保存状态，外部循环无需传递状态。
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;例二-1&quot;&gt;例二&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#例二-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; array &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Google&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Runoob&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;elementIterator&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;collection&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;-- 这些是闭包记住的状态&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;collection
    &lt;span class=&quot;token comment&quot;&gt;-- 返回的这个函数就是迭代函数&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; count &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; collection&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; element &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;elementIterator&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;array&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;element&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Google&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Runoob&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;


































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;无状态&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;多状态（闭包）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;状态存在哪&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;由 &lt;code&gt;for&lt;/code&gt; 传参 &lt;code&gt;(s, c)&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;闭包内部的局部变量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;in&lt;/code&gt; 后面写法&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;f, s, c&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;一个函数调用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;开销&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;小&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;每次遍历建一个闭包&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;适用&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;简单、位置能用一个值表示的遍历&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;状态复杂或需要缓存&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;例子&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;ipairs&lt;/code&gt;, &lt;code&gt;pairs&lt;/code&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;code&gt;string.gmatch&lt;/code&gt;, &lt;code&gt;io.lines&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;</content:encoded><category>Lua</category><category>Lua</category></item><item><title>制作utools插件</title><link>https://huyangpahuo.vercel.app/posts/zhi-zuo-utools-cha-jian/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/zhi-zuo-utools-cha-jian/</guid><description>做了一个utools插件用来生成yaml front matter </description><pubDate>Mon, 09 Mar 2026 22:45:24 GMT</pubDate><content:encoded>&lt;h1 id=&quot;前段时间是用ahk做的这玩意&quot;&gt;前段时间是用AHK做的这玩意&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#前段时间是用ahk做的这玩意&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;觉得这个东西还是作为简单易用的小工具为好&lt;/p&gt;
&lt;p&gt;所以就用utools来制作&lt;/p&gt;
&lt;p&gt;首先我们前往查看utools的&lt;a href=&quot;https://www.u-tools.cn/docs/developer/basic/first-plugin.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;官方文档&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;新建项目&quot;&gt;新建项目&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#新建项目&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%B6%E4%BD%9Cutools%E6%8F%92%E4%BB%B6/image-20261012124324129.webp&quot; alt=&quot;image-20261012124324129&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们按照这个结构和官方标准做一个插件并加载&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;TyporaWriterKit
├─ index.html
├─ logo.png
├─ plugin.json
├─ preload.js
├─ js
│  └─ app.js
└─ css
   └─ style.css
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%B6%E4%BD%9Cutools%E6%8F%92%E4%BB%B6/image-20260309231118078.webp&quot; alt=&quot;image-20260309231118078&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;预览&quot;&gt;预览&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#预览&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于这个本质上是前端网页所以可以在浏览器预览&lt;/p&gt;
&lt;p&gt;也可以点击&lt;code&gt;安装(开发模式)&lt;/code&gt;在utools里预览&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%B6%E4%BD%9Cutools%E6%8F%92%E4%BB%B6/image-20261012124459155.webp&quot; alt=&quot;image-20261012124459155&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;打包和上传&quot;&gt;打包和上传&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#打包和上传&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们可以看到有一个构建离线安装包和发布&lt;/p&gt;
&lt;p&gt;这个&lt;code&gt;.upxs&lt;/code&gt;我们打包后,可以直接发送给别人,双击后就自动安装到utools了&lt;/p&gt;
&lt;p&gt;不过上传插件市场就行了(不过我第一次制作的时候软件有bug打不开被打回了...)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%88%B6%E4%BD%9Cutools%E6%8F%92%E4%BB%B6/image-20261012125004229.webp&quot; alt=&quot;image-20261012125004229&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>uTools</category></item><item><title>和Airi玩Minecraft</title><link>https://huyangpahuo.vercel.app/posts/he-airi-wan-minecraft/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/he-airi-wan-minecraft/</guid><description>尝试airi的我的世界陪玩功能</description><pubDate>Sat, 07 Mar 2026 16:14:18 GMT</pubDate><content:encoded>&lt;h2 id=&quot;这是一个ai智能体-名字叫airi&quot;&gt;这是一个AI智能体 名字叫Airi&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这是一个ai智能体-名字叫airi&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307162559308.webp&quot; alt=&quot;image-20260307162559308&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307162859041.webp&quot; alt=&quot;image-20260307162859041&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个和Youtube上的AI虚拟主播Neuro-sama差不多&lt;/p&gt;
&lt;p&gt;这玩意居然可以玩我的世界&lt;/p&gt;
&lt;p&gt;首先我是开了一个spigot服务器试了一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307163154912.webp&quot; alt=&quot;image-20260307163154912&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307163226565.png&quot; alt=&quot;image-20260307163226565&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307163252551.webp&quot; alt=&quot;image-20260307163252551&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;没错,你可以看到这里多了一个玩家   &lt;font color=&quot;#FF0000&quot;&gt;Airi_Bot&lt;/font&gt;&lt;/p&gt;
&lt;h2 id=&quot;先给你们看看游戏截图&quot;&gt;先给你们看看游戏截图&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#先给你们看看游戏截图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307164353963.webp&quot; alt=&quot;image-20260307164353963&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307164420672.webp&quot; alt=&quot;image-20260307164420672&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;如你所见,这玩意跟智障一样,只会最最最简单的操作,比如丢东西,捡东西,跟随玩家等等&lt;/p&gt;
&lt;p&gt;只要复杂一点就理解不了,比如你让他砍树,是不可能的,然后后台就开始卡死冲突&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307164536051.webp&quot; alt=&quot;image-20260307164536051&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307165028417.png&quot; alt=&quot;image-20260307165028417&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个智能体的大脑,也就是用的AI公司的API&lt;/p&gt;
&lt;p&gt;我用的是Deepseek的API充了10块钱&lt;/p&gt;
&lt;p&gt;然后在这个文件里设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307165427267.webp&quot; alt=&quot;image-20260307165427267&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;简直笨死了,回答个问题都要思考半天,甚至都不如模组里的AI生物&lt;/p&gt;
&lt;h2 id=&quot;下载&quot;&gt;下载&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先用git下载&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;git clone https:&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;github&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;com/moeru-ai/airi&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后进入下载文件&lt;/p&gt;
&lt;p&gt;这里以我的为例&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;cd &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;d D:\AI\airi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;下载依赖&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;pnpm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;然后&lt;/p&gt;
&lt;p&gt;进入路径 services-&gt;miniecraft-&gt;.env&lt;/p&gt;
&lt;p&gt;把这个.env复制一份重命名为.env.local&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E5%92%8CAiri%E7%8E%A9Minecraft/image-20260307170422306.webp&quot; alt=&quot;image-20260307170422306&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后自己修改里面的配置&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;配置她的“大脑”&lt;/p&gt;
&lt;p&gt;OPENAI_API_KEY=你的_API_密钥&lt;br&gt;
OPENAI_API_BASEURL=你的_API_地址(如果有代理或者用第三方中转填这里)&lt;/p&gt;
&lt;p&gt;配置她的 Minecraft 身份&lt;/p&gt;
&lt;p&gt;BOT_USERNAME=Airi       # 你想给她在游戏里起的名字&lt;br&gt;
BOT_HOSTNAME=127.0.0.1  # 如果游戏跟代码在同一台电脑运行，就填这个&lt;br&gt;
BOT_PORT=50321          # 填入你刚才在游戏里开放的端口号&lt;br&gt;
BOT_VERSION=1.20        # 你的 Minecraft 版本&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果你用的是樱花穿透,参考我的设置&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6 2C4.89 2 4 2.9 4 4V20C4 21.11 4.89 22 6 22H12V20H6V4H13V9H18V12H20V8L14 2M18 14C17.87 14 17.76 14.09 17.74 14.21L17.55 15.53C17.25 15.66 16.96 15.82 16.7 16L15.46 15.5C15.35 15.5 15.22 15.5 15.15 15.63L14.15 17.36C14.09 17.47 14.11 17.6 14.21 17.68L15.27 18.5C15.25 18.67 15.24 18.83 15.24 19C15.24 19.17 15.25 19.33 15.27 19.5L14.21 20.32C14.12 20.4 14.09 20.53 14.15 20.64L15.15 22.37C15.21 22.5 15.34 22.5 15.46 22.5L16.7 22C16.96 22.18 17.24 22.35 17.55 22.47L17.74 23.79C17.76 23.91 17.86 24 18 24H20C20.11 24 20.22 23.91 20.24 23.79L20.43 22.47C20.73 22.34 21 22.18 21.27 22L22.5 22.5C22.63 22.5 22.76 22.5 22.83 22.37L23.83 20.64C23.89 20.53 23.86 20.4 23.77 20.32L22.7 19.5C22.72 19.33 22.74 19.17 22.74 19C22.74 18.83 22.73 18.67 22.7 18.5L23.76 17.68C23.85 17.6 23.88 17.47 23.82 17.36L22.82 15.63C22.76 15.5 22.63 15.5 22.5 15.5L21.27 16C21 15.82 20.73 15.65 20.42 15.53L20.23 14.21C20.22 14.09 20.11 14 20 14M19 17.5C19.83 17.5 20.5 18.17 20.5 19C20.5 19.83 19.83 20.5 19 20.5C18.16 20.5 17.5 19.83 17.5 19C17.5 18.17 18.17 17.5 19 17.5Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;yml&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-yml&quot;&gt;OPENAI_API_BASEURL=&apos;https&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;//api.deepseek.com&apos;
OPENAI_API_KEY=&apos;输入Deepseek的API&apos;
OPENAI_MODEL=&apos;deepseek&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;reasoner&apos;
OPENAI_REASONING_MODEL=&apos;deepseek&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;reasoner&apos;

BOT_USERNAME=&apos;Airi_Bot&apos;
BOT_HOSTNAME=&apos;frp&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;gap.com&apos;
BOT_PORT=&apos;端口号&apos;
&lt;span class=&quot;token comment&quot;&gt;# # For all online accounts, un-comment the following line to toggle Microsoft authentication.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # Link for authentication will popup when the bot starts.&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # After signed in, according to [how Minecraft protocol was implemented](https://github.com/PrismarineJS/node-minecraft-protocol/blob/bf89f7e86526c54d8c43f555d8f6dfa4948fd2d9/src/client/microsoftAuth.js#L7-L16)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # and also, [authentication flow implemented here](https://github.com/PrismarineJS/prismarine-auth/blob/1aef6e1387d94fca839f2811d17ac6659ae556b4/src/MicrosoftAuthFlow.js#L59-L69),&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # the token will be cached with [the cache IDs specified here](https://github.com/PrismarineJS/prismarine-auth/blob/1aef6e1387d94fca839f2811d17ac6659ae556b4/src/MicrosoftAuthFlow.js#L88-L93)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # in split files:&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # - ${hash}_live-cache.json&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # - ${hash}_mca-cache.json&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # - ${hash}_xbl-cache.json&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # inside of the directory provided by [`minecraft-folder-path`](https://github.com/simonmeusel/minecraft-folder-path)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # Linux: ~/.minecraft&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # macOS: ~/Library/Application Support/minecraft&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # Windows: %appdata%/.minecraft&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# # where ${hash} is the sha1 hash of the username you signing in with (as Minecraft username).&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# #&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;# BOT_AUTH=&apos;microsoft&apos;&lt;/span&gt;
BOT_VERSION=&apos;1.21.5&apos;  &lt;span class=&quot;token comment&quot;&gt;#对应MC世界的版本&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;就这样设置,最好换模型为deepseek-R1,不然会报错&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;将这一行&lt;/p&gt;
&lt;p&gt;OPENAI_MODEL=&apos;deepseek-chat&apos;&lt;/p&gt;
&lt;p&gt;修改为&lt;/p&gt;
&lt;p&gt;OPENAI_MODEL=&apos;deepseek-reasoner&apos;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;完成后cmd窗口输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M21.83,4C22.32,4 22.63,4.4 22.5,4.89L19.34,19.11C19.23,19.6 18.75,20 18.26,20H2.17C1.68,20 1.37,19.6 1.5,19.11L4.66,4.89C4.77,4.4 5.25,4 5.74,4H21.83M15.83,16H11.83C11.37,16 11,16.38 11,16.84C11,17.31 11.37,17.69 11.83,17.69H15.83C16.3,17.69 16.68,17.31 16.68,16.84C16.68,16.38 16.3,16 15.83,16M5.78,16.28C5.38,16.56 5.29,17.11 5.57,17.5C5.85,17.92 6.41,18 6.81,17.73C14.16,12.56 14.21,12.5 14.26,12.47C14.44,12.31 14.53,12.09 14.54,11.87C14.55,11.67 14.5,11.5 14.38,11.31L9.46,6.03C9.13,5.67 8.57,5.65 8.21,6C7.85,6.32 7.83,6.88 8.16,7.24L12.31,11.68L5.78,16.28Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;powershell&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;pnpm &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;F @proj-airi/minecraft-bot &lt;span class=&quot;token function&quot;&gt;start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;自己先打开服务器,,过一会机器人就自己加进来了&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Airi</category><category>Diary</category></item><item><title>lua---可变参数和运算符</title><link>https://huyangpahuo.vercel.app/posts/lua-ke-bian-can-shu-he-yun-suan-fu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/lua-ke-bian-can-shu-he-yun-suan-fu/</guid><description>学习可变参数和运算符和常见字符串函数</description><pubDate>Thu, 05 Feb 2026 18:44:12 GMT</pubDate><content:encoded>&lt;h1 id=&quot;今天来了解一点新的东西&quot;&gt;今天来了解一点新的东西&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天来了解一点新的东西&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;可变参数&quot;&gt;可变参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#可变参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;之前讲函数的时候忘记了这个可变参数,不过说实话我感觉这玩意会诞生估计是lua语言制作者用来偷懒的&lt;/p&gt;
&lt;p&gt;这个东西某种程度上还挺好用的,但是只能在函数function里使用&lt;/p&gt;
&lt;p&gt;正常的代参函数是这样的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; c
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;numberCount&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出 6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是假如我们传入的参数贼多,这时候就可以使用   “&lt;font color=&quot;#FFD700&quot;&gt;...&lt;/font&gt;”&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; args &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;args &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;--for循环遍历表&lt;/span&gt;
        sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; sum
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出 6&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;--此时可以用...忽略表名&lt;/span&gt;
        sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; sum
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;numberAdd2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出 6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;还可以这样在里面加上固定参数,固定参数必须放在可变参数之前&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;hello&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hi&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;---&gt; 固定的参数hi&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; io&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hi&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;hello&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;hello&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;911&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以看到可变参数...使用方法和表没有区别,如果使用#来获取...的长度,那么...参数里就不能出现nil,否则nil会被忽略&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;通常在遍历变长参数的时候只需要使用 &lt;strong&gt;{…}&lt;/strong&gt;，然而变长参数可能会包含一些 &lt;strong&gt;nil&lt;/strong&gt;，那么就可以用 &lt;strong&gt;select&lt;/strong&gt; 函数来访问变长参数了：&lt;strong&gt;select(&apos;#&apos;, …)&lt;/strong&gt; 或者 &lt;strong&gt;select(n, …)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;select(&apos;#&apos;, …)&lt;/strong&gt; 返回可变参数的长度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;select(n, …)&lt;/strong&gt; 用于返回从起点 &lt;strong&gt;n&lt;/strong&gt; 开始到结束位置的所有参数列表&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260205233440605.webp&quot; alt=&quot;image-20260205233440605&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; args &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;args &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--for循环遍历表&lt;/span&gt;
        sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;args&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--返回参数个数和总和&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; total &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;参数个数为&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;，总和为&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; total&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出 参数个数为3，总和为6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;select或select统计传入参数总数&quot;&gt;select(&quot;#&quot;,...)或select(&apos;#&apos;,...)统计传入参数总数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#select或select统计传入参数总数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这时候我们可以使用&lt;code&gt;select(&quot;#&quot;,...)&lt;/code&gt;或者&lt;code&gt;select(&apos;#&apos;,...)&lt;/code&gt;,就可以返回可变参数的真实数量了包括nil&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260205234158826.webp&quot; alt=&quot;image-20260205234158826&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; args &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;args &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--for循环遍历表&lt;/span&gt;
        sum &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; sum &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; sum&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--返回参数个数和总和&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; total &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;numberAdd&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;参数个数为&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;，总和为&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; total&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出 参数个数为4，总和为6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;selectn返回从第n个参数和其后的所有参数&quot;&gt;select(n,...)返回从第n个参数和其后的所有参数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#selectn返回从第n个参数和其后的所有参数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;原神&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;鸣潮&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;args1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; a&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;--结果只有原神,因为这个select(2, ...)是多返回值,但是只有a一个变量接收&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;args1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;原神&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;鸣潮&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;args2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;args2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;原神&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;鸣潮&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;args3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; table &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;args3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;终末地&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;原神&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;鸣潮&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260205235452574.webp&quot; alt=&quot;image-20260205235452574&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; t &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;select&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;所以可变参数就是&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;① ... 是一堆参数&lt;/p&gt;
&lt;p&gt;② {...}是把参数变成表,返回值是地址&lt;/p&gt;
&lt;p&gt;③ select是精确操作参数&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;运算符&quot;&gt;运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;算术运算符&quot;&gt;算术运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#算术运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;

















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;操作符&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;描述&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;实例(A=10,B=20)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;+&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;加法&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A + B 输出结果 30&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;-&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;减法&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A - B 输出结果 -10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;*&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;乘法&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A * B 输出结果 200&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;/&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;除法&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;B / A 输出结果 2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;%&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;取余&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;B % A 输出结果 0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;^&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;乘幂&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;A^2 输出结果 100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;-&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;负号&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;-A 输出结果 -10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;//&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;整除运算符(&gt;=lua5.3)&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;&lt;strong&gt;5//2&lt;/strong&gt; 输出结果 2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;⚠️在 lua 中，&lt;strong&gt;/&lt;/strong&gt; 用作除法运算，计算结果包含小数部分，&lt;strong&gt;//&lt;/strong&gt; 用作整除运算，计算结果不包含小数部分,也就是取整&lt;/p&gt;
&lt;h3 id=&quot;关系运算符&quot;&gt;关系运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关系运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;







































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;操作符&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;描述&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;实例(A=10,B=20)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;==&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;等于，检测两个值是否相等，相等返回 true，否则返回 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A == B) 为 false&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;~=&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;不等于，检测两个值是否相等，不相等返回 true，否则返回 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A ~= B) 为 true&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&gt;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;大于，如果左边的值大于右边的值，返回 true，否则返回 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A &gt; B) 为 false&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C;&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;小于，如果左边的值大于右边的值，返回 false，否则返回 true&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A &amp;#x3C; B) 为 true&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&gt;=&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;大于等于，如果左边的值大于等于右边的值，返回 true，否则返回 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A &gt;= B) 返回 false&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;&amp;#x3C;=&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;小于等于， 如果左边的值小于等于右边的值，返回 true，否则返回 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A &amp;#x3C;= B) 返回 true&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;逻辑运算符&quot;&gt;逻辑运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#逻辑运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;操作符&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;描述&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;实例(A=10,B=20)&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;and&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;逻辑与操作符。 若 A 为 false，则返回 A，否则返回 B&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A and B) 为 false&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;or&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;逻辑或操作符。 若 A 为 true，则返回 A，否则返回 B&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;(A or B) 为 true&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;not&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;逻辑非操作符。与逻辑运算结果相反，如果条件为 true，逻辑非为 false&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;not(A and B) 为 true&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;其他运算符&quot;&gt;其他运算符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#其他运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;操作符&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;描述&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;实例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;..&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;连接两个字符串&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;a..b ，其中 a 为 &quot;Hello &quot; ， b 为 &quot;World&quot;, 输出结果为 &quot;Hello World&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;#&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;一元运算符，返回字符串或表的长度。&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;#&quot;Hello&quot; 返回 5&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;运算符优先级&quot;&gt;运算符优先级&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#运算符优先级&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;从上到下优先级依次降低&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;^
not    - (负号)
*      /       %
+      - (减号)
..
&amp;#x3C;      &gt;      &amp;#x3C;=     &gt;=     ~=     ==
and
or
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;字符串函数&quot;&gt;字符串函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#字符串函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;字符串这个我们之前已经讲过了一部分,这里系统学习一下有关字符串的函数吧&lt;/p&gt;
&lt;h3 id=&quot;字符串长度计算&quot;&gt;①字符串长度计算&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#字符串长度计算&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; ASCII计算

utf8&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  UTF8计算
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Lua 中,要计算字符串的长度(即字符串中字符的个数),可以使用 &lt;strong&gt;string.len&lt;/strong&gt; 函数或 &lt;strong&gt;utf8.len&lt;/strong&gt; 函数&lt;/p&gt;
&lt;p&gt;计算包含中文的字符串一般用 &lt;strong&gt;utf8.len&lt;/strong&gt;,&lt;/p&gt;
&lt;p&gt;计算只包含 ASCII 字符串的长度用 &lt;strong&gt;string.len&lt;/strong&gt;,UTF-8 中文 = 3字节&lt;/p&gt;
&lt;p&gt;​	 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207171744032.webp&quot; alt=&quot;image-20260207171744032&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看出string.len是按照字节数计算的,而utf8.len是按照字符的个数计算的&lt;/p&gt;
&lt;h3 id=&quot;-字符串英文大小写转换&quot;&gt;② 字符串英文大小写转换&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-字符串英文大小写转换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;upper&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 小写转大写

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;lower&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 大写转小写
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207173754106.webp&quot; alt=&quot;image-20260207173754106&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;-替换字符串里的元素&quot;&gt;③ 替换字符串里的元素&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-替换字符串里的元素&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;main&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; find&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; replace&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;参数解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt;：原字符串&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find&lt;/code&gt;：要找的内容（支持模式匹配）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;replace&lt;/code&gt;：替换成什么&lt;/li&gt;
&lt;li&gt;&lt;code&gt;num&lt;/code&gt;：替换次数（可选，不写 = 全部替换）&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;这么说你们可能看不懂&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207205302321.webp&quot; alt=&quot;image-20260207205302321&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这下你们理解了吧,可以看到返回值有两个&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;返回值1：新字符串&lt;/p&gt;
&lt;p&gt;返回值2：替换次数&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207205732441.webp&quot; alt=&quot;image-20260207205732441&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们还可以这么玩,就是利用模式匹配,%d为数字&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207210200583.webp&quot; alt=&quot;image-20260207210200583&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2026-02-10&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%d+)%-(%d+)%-(%d+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%3/%2/%1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;10/02/2026&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc###&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个后面会细说这个模式匹配的事&lt;/p&gt;
&lt;h3 id=&quot;--查找字符串子串位置索引&quot;&gt;④ 	 查找字符串子串位置（索引）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--查找字符串子串位置索引&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; substr&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;init&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;plain&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;str&lt;/code&gt;: 原字符串&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;substr&lt;/code&gt;:要查找的字符串&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;init&lt;/code&gt;：开始位置（默认1）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;plain&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;true&lt;/code&gt;：普通查找（不使用模式）&lt;/p&gt;
&lt;p&gt;&lt;code&gt;false&lt;/code&gt;：模式匹配（正则风格，默认）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260207212128549.webp&quot; alt=&quot;image-20260207212128549&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;返回值1: 要查找的字符串在原字符串中的开始位置&lt;/p&gt;
&lt;p&gt;返回值2:要查找的字符串在原字符串中的结束位置&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- +号是正则符号&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a+b&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;--字符串反转只支持ascii符号&quot;&gt;⑤  字符串反转(只支持ASCII符号)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--字符串反转只支持ascii符号&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reverse&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;    
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260208141648374.webp&quot; alt=&quot;image-20260208141648374&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;-字符串格式化&quot;&gt;⑥ 字符串格式化&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-字符串格式化&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这个之前说过了,和C语言printf类似,就不细说了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260208145712219.webp&quot; alt=&quot;image-20260208145712219&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;常用格式符：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;符号&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%d&lt;/td&gt;&lt;td&gt;整数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%f&lt;/td&gt;&lt;td&gt;浮点数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%q&lt;/td&gt;&lt;td&gt;带引号字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%.2f&lt;/td&gt;&lt;td&gt;保留两位小数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%x&lt;/td&gt;&lt;td&gt;十六进制&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;这里还有更多&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;格式字符串可能包含以下的转义码:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符&lt;/li&gt;
&lt;li&gt;%d, %i - 接受一个数字并将其转化为有符号的整数格式&lt;/li&gt;
&lt;li&gt;%o - 接受一个数字并将其转化为八进制数格式&lt;/li&gt;
&lt;li&gt;%u - 接受一个数字并将其转化为无符号整数格式&lt;/li&gt;
&lt;li&gt;%x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母&lt;/li&gt;
&lt;li&gt;%X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母&lt;/li&gt;
&lt;li&gt;%e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e&lt;/li&gt;
&lt;li&gt;%E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E&lt;/li&gt;
&lt;li&gt;%f - 接受一个数字并将其转化为浮点数格式&lt;/li&gt;
&lt;li&gt;%g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式&lt;/li&gt;
&lt;li&gt;%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式&lt;/li&gt;
&lt;li&gt;%s - 接受一个字符串并按照给定的参数格式化该字符串&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;不过有一个需要注意,Lua 的格式符基本结构是:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;%[符号][填充][对齐][宽度][.精度]类型

对应:
% + 0 - 宽度 .精度 类型
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;① 正负符号&lt;span class=&quot;token string&quot;&gt;&quot;+&quot;&lt;/span&gt;和&lt;span class=&quot;token string&quot;&gt;&quot;-&quot;&lt;/span&gt;
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%+d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;+5&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;5&quot; ,正数默认不显示+号&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%+d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;-5&quot; ,负数默认显示-号&lt;/span&gt;

② 占位符&lt;span class=&quot;token string&quot;&gt;&quot;0&quot;&lt;/span&gt;
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%5d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;   42&quot;  (前面是空格)&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%05d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;00042&quot;, 用 0 填充空位（默认是空格）&lt;/span&gt;

③ 对齐标识&lt;span class=&quot;token string&quot;&gt;&quot;-&quot;&lt;/span&gt;
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%5d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;   42&quot;  (默认右对齐)&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%-5d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;42&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;42   &quot;  (左对齐)&lt;/span&gt;

④ 宽度数值
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%5s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;  Lua&quot;,即最少占用多少字符宽度,少的话空格填补&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%5s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;HelloLua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;HelloLua&quot; ,多的话也不会截断&lt;/span&gt;

⑤ 精度
&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 对于浮点型
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%.2f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.14159&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;3.14&quot; ,2是保留两位小数&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%6.2f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3.14159&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;  3.14&quot; ,6是总宽度&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;对于字符串
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%.3s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;Hel&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%5.3s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;  Hel&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以用来打印角色信息&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260209001053002.webp&quot; alt=&quot;image-20260209001053002&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;也可以输出游戏时间和评分&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260209001513906.webp&quot; alt=&quot;image-20260209001513906&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;--数字和字符转换&quot;&gt;⑦  数字和字符转换&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--数字和字符转换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;char&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--数字 → 字符（ASCII/UTF8编码）&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;byte&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;--字符 → 数字编码 ,第二个参数是索引值&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;char 将整型数字转成字符并连接， byte 转换字符为整数值(可以指定某个字符，默认第一个字符)&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260208151409611.webp&quot; alt=&quot;image-20260208151409611&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;​		&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260208151746772.webp&quot; alt=&quot;image-20260208151746772&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;-重复字符串&quot;&gt;⑧ 重复字符串&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-重复字符串&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rep&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260208234817461.webp&quot; alt=&quot;image-20260208234817461&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;-字符串截取&quot;&gt;⑨ 字符串截取&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-字符串截取&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;参数解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;：原字符串&lt;/li&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;：起始位置（必填）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;j&lt;/code&gt;：结束位置（可选，默认 -1）&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;你看这个和string.gsub(main, find, replace, num)是不是有点像,只不过那个是替换,这个是截取&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;bcde&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 如果省略第二个参数，默认到字符串末尾,即j 默认是 -1（最后一个字符）&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;cdef&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对了,之前忘记说了,lua支持负数索引,这个特点大多数语言都不具备,负数索引就是从后往前数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;f&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;ef&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abcdef&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;bcde&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;⚠️只支持ASCII符号,中文的话需要自己计算字节长度来确定其实和终止位置,因为中文是三字节,英文和数字默认1字节,而且超过范围lua不会报错&lt;/p&gt;
&lt;p&gt;这个可以这么用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;✅ 截取文件后缀名
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; filename &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;test.png&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; ext &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;filename&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ext&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;-- png&lt;/span&gt;

✅ 截取前缀
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; id &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;user_12345&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- user&lt;/span&gt;

✅ 去掉扩展名
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello.lua&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; dot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dot&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- hello&lt;/span&gt;

✅ 截取路径文件名
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; path &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;/home/user/file.txt&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;find&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.*/&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- file.txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;--全局匹配-循环扫描&quot;&gt;⑩  全局匹配 (循环扫描)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--全局匹配-循环扫描&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;返回一个迭代器函数，每一次调用这个函数，返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到，迭代函数返回nil ,通常和 &lt;code&gt;for&lt;/code&gt; 一起用&lt;/p&gt;
&lt;p&gt;说人话就是找到所有匹配条件的东西,比如下方这个就是找到字符串里的所有英文单词&lt;/p&gt;
&lt;p&gt;​	这些是可以互相组合的,例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; word &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello Lua user&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%a+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;word&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--%a = 字母（a-zA-Z）&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--+ = 连续多个&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--%a+ = 连续的字母&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; num &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a1b22c333&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; ch &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;ch&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; s &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello   Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%s+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;space:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260210160644931.webp&quot; alt=&quot;image-20260210160644931&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;-首次匹配-单次扫描&quot;&gt;⑪ 首次匹配 (单次扫描)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-首次匹配-单次扫描&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pattern&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; init&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;参数含义:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;str :  要匹配的字符串&lt;/li&gt;
&lt;li&gt;pattern: 模式(规则)&lt;/li&gt;
&lt;li&gt;init : 从第几个字符开始匹配(可选),默认1&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123def456&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--456&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123def456&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--123&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123def&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--123&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123def456&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--456&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;I have 2 questions&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%d+) (%a+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 返回: &quot;2&quot;, &quot;questions&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d, %q&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;I have 2 questions&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%d+) (%a+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 2, &quot;questions&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;区别&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;gmatch = 找“所有符合规则的东西”（循环）,全局匹配（一个一个返回）&lt;br&gt;
match = 找“第一个符合规则的东西”（一次）,只匹配第一个结果（一次性返回）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;注意是match是每个捕获都会返回第一个匹配结果,不是只返回一个结果&lt;/p&gt;
&lt;h2 id=&quot;有关pattern知识这里用stringmatch来讲&quot;&gt;有关pattern知识(这里用string.match来讲)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#有关pattern知识这里用stringmatch来讲&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lua 没有完整正则表达式，但有一套“轻量正则”（pattern）&lt;/p&gt;
&lt;p&gt;可以理解为：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lua pattern = 简化版正则表达式&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;模式：&lt;/p&gt;
&lt;h4 id=&quot;1基本字符类&quot;&gt;(1)基本字符类&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1基本字符类&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;



























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%a&lt;/td&gt;&lt;td&gt;字母 (A-Z a-z)&lt;/td&gt;&lt;td&gt;&quot;abc&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%d&lt;/td&gt;&lt;td&gt;数字 (0-9)&lt;/td&gt;&lt;td&gt;&quot;123&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%l&lt;/td&gt;&lt;td&gt;小写字母&lt;/td&gt;&lt;td&gt;&quot;abc&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%u&lt;/td&gt;&lt;td&gt;大写字母&lt;/td&gt;&lt;td&gt;&quot;ABC&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%w&lt;/td&gt;&lt;td&gt;字母或数字&lt;/td&gt;&lt;td&gt;&quot;abc123&quot;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;空白字符&lt;/td&gt;&lt;td&gt;空格、tab&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%p&lt;/td&gt;&lt;td&gt;标点符号&lt;/td&gt;&lt;td&gt;. , ! ?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%c&lt;/td&gt;&lt;td&gt;控制字符&lt;/td&gt;&lt;td&gt;\n \t&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%x&lt;/td&gt;&lt;td&gt;十六进制&lt;/td&gt;&lt;td&gt;0-9 A-F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%z&lt;/td&gt;&lt;td&gt;字符 0&lt;/td&gt;&lt;td&gt;\0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&apos;%&apos; 用作特殊字符的转义字符，因此 &apos;%.&apos; 匹配点；&apos;%%&apos; 匹配字符 &apos;%&apos;&lt;/p&gt;
&lt;p&gt;转义字符 &apos;%&apos;不仅可以用来转义特殊字符，还可以用于所有的非字母的字符&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc1234&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%a+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc1234&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;1234&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc1234&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%a+%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc1234&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc1234&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%w+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc1234&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc 1234&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%a+%s+%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc 1234&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260210170230710.webp&quot; alt=&quot;image-20260210170230710&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;2取反大写字母&quot;&gt;(2)取反（大写字母）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2取反大写字母&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%A&lt;/td&gt;&lt;td&gt;非字母&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%D&lt;/td&gt;&lt;td&gt;非数字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%S&lt;/td&gt;&lt;td&gt;非空白&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%W&lt;/td&gt;&lt;td&gt;非字母数字&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%D+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;3普通字符匹配&quot;&gt;(3)普通字符匹配&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3普通字符匹配&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;字符 a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;字符 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Lua&lt;/td&gt;&lt;td&gt;字符串 Lua&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;Lua&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;4特殊符号量词&quot;&gt;(4)特殊符号（量词）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#4特殊符号量词&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;符号&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;任意字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;+&lt;/td&gt;&lt;td&gt;1次或多次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;*&lt;/td&gt;&lt;td&gt;0次或多次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;-&lt;/td&gt;&lt;td&gt;0次或多次（最短匹配）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;?&lt;/td&gt;&lt;td&gt;0次或1次&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; 任意字符
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;a.c&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;&lt;/span&gt;

&lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; 至少一次
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;123abc&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;123&quot;&lt;/span&gt;

&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; 任意次（贪婪）
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%a*&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;&lt;/span&gt;

&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; 非贪婪（最短匹配）
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&amp;#x3C;tag&gt;hello&amp;#x3C;/tag&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&amp;#x3C;.-&gt;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;&amp;#x3C;tag&gt;&quot;&lt;/span&gt;

? 可有可无
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;color&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;colou?r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;color&quot;&lt;/span&gt;

string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;colour&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;colou?r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;colour&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;*&lt;/code&gt; = 贪婪&lt;br&gt;
&lt;code&gt;-&lt;/code&gt; = 非贪婪&lt;/p&gt;
&lt;h4 id=&quot;5字符集合--&quot;&gt;(5)字符集合 &lt;code&gt;[ ]&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#5字符集合--&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;类似正则的字符集&lt;/p&gt;
&lt;p&gt;例如[abc] 表示a 或 b 或 c,那么[ ^ abc ]表示除了abc以外的的字符&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%90%E7%AE%97%E7%AC%A6/image-20260210162649514.webp&quot; alt=&quot;image-20260210162649514&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;范围为&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[a-z]&lt;/li&gt;
&lt;li&gt;[0-9]&lt;/li&gt;
&lt;li&gt;[A-Z]&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[0-9]+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;123&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;6边界符锚点&quot;&gt;(6)边界符（锚点）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#6边界符锚点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;首先我们需要清楚一件事-----那就是边界符匹配的是位置,也就是边界,而不是字符&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;^&lt;/td&gt;&lt;td&gt;字符串开头,即字符串开始边界&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;字符串结尾,即字符串结束边界&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%f[set]&lt;/td&gt;&lt;td&gt;前沿边界（Lua 独有）,即“自定义边界”&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;^&lt;/span&gt; 开头匹配
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;^hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;^world&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--nil&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world 123&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;^&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[START]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--[START]hello world 123 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看出,hello位于字符串的开头,匹配成功,而world位于字符串的末尾,匹配不成功&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;$ 结尾匹配
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;world$&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello$&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--world&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--nil&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world 123&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;$&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[END]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--hello world 123[END] 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中^和$这两个一看就明白是干嘛的, ^是从从字符串开头找有没有这个&lt;/p&gt;
&lt;p&gt;$是从字符串结尾找有没有这个&lt;/p&gt;
&lt;p&gt;重点就是这个%f比较难理解&lt;/p&gt;
&lt;p&gt;%f = frontier = 边界,指的是匹配“字符边界”，不是字符本身&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;%f[set]&lt;/code&gt; 匹配一个位置：&lt;br&gt;
左边的字符不属于 set，右边的字符属于 set&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;部分(以%a为例)&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%f[%a]&lt;/td&gt;&lt;td&gt;左边不是字母，右边是字母&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%f[ ^%a ]&lt;/td&gt;&lt;td&gt;左边是字母，右边不是字母&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;我们还是看具体的例子吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--例一:匹配单词开头&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f[%w]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;|&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--|hello |world   2&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;w &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 字母或数字
所以 &lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;f&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; “单词的起点”

&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;空格&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; h → h 是字母，左边不是字母 → 匹配
&lt;span class=&quot;token function&quot;&gt;o&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;空格&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; → 空格不是字母 → 不匹配
&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;空格&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; w → w 是字母，左边不是字母 → 匹配


&lt;span class=&quot;token comment&quot;&gt;--例二:更直观一点的&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world 123&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f[%w]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[WORD_START]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f[^%w]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;[WORD_END]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--[WORD_START]hello [WORD_START]world [WORD_START]123     3&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--hello[WORD_END] world[WORD_END] 123[WORD_END]   3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;






































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;边界符&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;th&gt;可自定义&lt;/th&gt;&lt;th&gt;示例&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;^&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符串开始&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;^hello&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;$&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字符串结束&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;&lt;code&gt;&quot;world$&quot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%w]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单词开始&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[%w]hello&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[^%w]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单词结束&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;hello%f[^%w]&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%d]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;数字开始&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[%d]123&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[^%d]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;数字结束&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[^%d]123&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字母开始&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[%a]abc&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[^%a]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字母结束&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[^%a]abc&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[b]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字母 b 开始&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[b]abc&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[^b]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;字母 b 结束&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;&lt;code&gt;%f[^b]abc&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;我们可以使用更多例子来解释这个东西,记住%f[%a]这种只是代表位置相当于一个索引号不是具体的数字或者字母&lt;/p&gt;
&lt;p&gt;我们以后看见这个%f[%a]心里可以默认这是单词的开头可以直接忽视,因为这个是代表我们看不见的东西的属于概念&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--例一: 单词的匹配&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; text &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;cat category bobcat cat!&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; w &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a]cat%f[%A]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--cat&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--cat&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--不知道大家还记不记得%A代表什么?  没错! 代表非字母也就是单词的结尾,等同于 ^%a&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例二:提取所有单词&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; word &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello, Lua 5.4!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a]%w+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;word&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Lua&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例三:提取出变量名&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;local var1 = test_value + foo2&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; name &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a_][%w_]+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--local&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--var1&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--test_value&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--foo2&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--这是因为%f[%a_]表示变量名开始  [%w_]+表示变量内容&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--[%w_]与任何字母/数字, 或下划线符号(_)配对&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例四:提取出数字&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;abc123def45&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; num &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%d]%d+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;num&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--123&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--45&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例五:替换字母&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;category cat bobcat&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a]cat%f[%A]&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;dog&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--category dog bobcat     1&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例六:查找单词开头为大写的单词&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Hello world From Lua&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; w &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a][A-Z]%w*&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--From&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Lua&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;%f 除了可以获取看的见的东西,还能获取看不见的东西----位置&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也就是使用    %f[ set] ()&lt;/p&gt;
&lt;p&gt;它的作用是：&lt;strong&gt;精确获取某个“边界位置”的索引&lt;/strong&gt;,当然这里表示获取某类字符开始的位置&lt;/p&gt;
&lt;p&gt;因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%f&lt;/code&gt; 只匹配 &lt;strong&gt;位置&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;()&lt;/code&gt; 捕获 &lt;strong&gt;当前位置的索引&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;对了,你们看到的()这种括号表示捕获,也就是我们下面要讲的东西,每个括号即每个捕获都有一个返回值&lt;/p&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--例一:获取所有单词的位置&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;hello world lua&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; start&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; word &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a]()(%w+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;start&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; word&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--1       hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--7       world&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--13      lua&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例二:token拆解器&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;var1 = foo + bar2&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%w_]()([%w_]+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--1       var1&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--8       foo&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--14      bar2&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--和例一差不多&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例三:遍历所有单词的位置&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Lua is simple and powerful&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a]()&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; word &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%w+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; word&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--1       Lua&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--5       is&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--8       simple&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--15      and&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--19      powerful&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--例四: 获取数字的位置&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;abc123def456&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;()(%f[%d])&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--4&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;常见的写法和用途&lt;/p&gt;
&lt;p&gt;不需要记住,用到时看一眼就行了,而且写法千变万化,并不局限于以下写法&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;单词边界&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单词开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%A]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;单词结束&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;单词提取&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a](%w+)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提取单词&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a]%w+%f[%A]&lt;/code&gt;&lt;/td&gt;&lt;td&gt;完整单词&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;数字识别&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%d]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;数字开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%d]%d+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;提取整数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%d]%d+%.%d+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;浮点数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Lua变量规则：&lt;/p&gt;
&lt;p&gt;[ a-z A-Z_ ] [a-z A-Z 0-9_ ]*&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Lua变量名&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a_]()([%a_][%w_]*)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;变量名 + 位置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%a_][%a_][%w_]*&lt;/code&gt;&lt;/td&gt;&lt;td&gt;变量名&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;标点检测&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%p]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;标点开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%p+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;连续标点&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;空格边界&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%s]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;空格开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%s+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;连续空格&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;大写字母&lt;/th&gt;&lt;th&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%u]()&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大写字母开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;%f[%u][A-Z]+&lt;/code&gt;&lt;/td&gt;&lt;td&gt;大写单词&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;h3 id=&quot;单词--位置&quot;&gt;单词 + 位置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#单词--位置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;%f[%a]()(%w+)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;变量--位置&quot;&gt;变量 + 位置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#变量--位置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;%f[%a_]()([%a_][%w_]*)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;数字--位置&quot;&gt;数字 + 位置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#数字--位置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;%f[%d]()(%d+%.?%d*)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h3 id=&quot;标点--位置&quot;&gt;标点 + 位置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#标点--位置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;()(%p+)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;但是各位有没有想过,那么括号这种东西怎么匹配呢?&lt;/p&gt;
&lt;p&gt;之前有一个东西忘记说了那就是&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Lua 中，&lt;code&gt;%b&lt;/code&gt; 是一种特殊的&lt;strong&gt;模式匹配字符（Pattern Matching）&lt;/strong&gt;，专门用于匹配&lt;strong&gt;平衡的配对符号&lt;/strong&gt;（如成对的括号、大括号、方括号等）。它通过 &lt;code&gt;string.find&lt;/code&gt;、&lt;code&gt;string.gsub&lt;/code&gt; 等函数使用，格式为 &lt;code&gt;%bxy&lt;/code&gt;，其中 &lt;code&gt;x&lt;/code&gt; 是起始字符，&lt;code&gt;y&lt;/code&gt; 是结束字符。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;   匹配 &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;   匹配 &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;   匹配 &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;(a(b)c)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%b()&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--(a(b)c)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--可以自动匹配嵌套括号&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;更高级的用途例如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--例一: 解析代码 token&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;foo(bar, 123) + test[5]&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%w_]()([%w_]+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;identifier:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;()(%b())&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;paren block:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;()(%b[])&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;index block:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     1       foo&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     5       bar&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     10      123&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     17      test&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     22      5&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--paren block:    4       (bar, 123)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--index block:    21      [5]&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;--例二:精确识别 token(好像和例一也没什么区别)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; code &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;var1 = foo(bar, 42)&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%a_]()([%a_][%w_]*)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;identifier:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; token&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; number &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f[%d]()(%d+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;number:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; number&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;code&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;()(%b())&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;call:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; block&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     1       var1&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     8       foo&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--identifier:     12      bar&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--number: 4       1&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--number: 17      42&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--call:   11      (bar, 42)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;什么,你说这个玩意有什么用,说实话我目前也不知道有什么用(毕竟我才刚学),AI说这个可以写写代码高亮（非常常见）,代码格式化工具,代码检查工具,DSL,模板引擎,代码转换工具,解释器 / 编程语言&lt;/p&gt;
&lt;p&gt;但是吧,我觉得大家可能用不上这个,因为我学lua只是为了做游戏又不是写无聊的编辑器&lt;/p&gt;
&lt;h4 id=&quot;7捕获capture&quot;&gt;(7)捕获（capture）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#7捕获capture&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;捕获组就是用括号 &lt;code&gt;()&lt;/code&gt; 包起来的部分,空的捕获 &lt;code&gt;()&lt;/code&gt; 将捕获到当前字符串的位置（它是一个数字）&lt;/p&gt;
&lt;p&gt;捕获 = “把匹配到的内容抓出来”&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;基本捕获 &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;abc123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%a+)(%d+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;abc&quot;, &quot;123&quot;&lt;/span&gt;

嵌套捕获
string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2026-02-10&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%d+)%-(%d+)%-(%d+)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- &quot;2026&quot;, &quot;02&quot;, &quot;10&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;之所以会出现多个返回值是因为有因为有多个括号：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;例如基本捕获里的&lt;/p&gt;
&lt;p&gt;(%a+)   --&gt; 第1个捕获&lt;br&gt;
(%d+)   --&gt; 第2个捕获&lt;/p&gt;
&lt;p&gt;return &quot;abc&quot;, &quot;123&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id=&quot;8引用捕获-1-2-&quot;&gt;8)引用捕获 &lt;code&gt;%1 %2 ...&lt;/code&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#8引用捕获-1-2-&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;hello hello&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;(%w+)%s+%1&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--hello&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;%1&lt;/code&gt; = 第一个捕获的内容&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%2&lt;/code&gt; = 第二个捕获的内容&lt;/p&gt;
&lt;p&gt;...以此类推&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我们只需要记住这些即可&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;












































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;模式&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%d+&lt;/td&gt;&lt;td&gt;数字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%a+&lt;/td&gt;&lt;td&gt;单词&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%w+&lt;/td&gt;&lt;td&gt;字母数字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.+&lt;/td&gt;&lt;td&gt;任意&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.-&lt;/td&gt;&lt;td&gt;最短任意&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;^&lt;/td&gt;&lt;td&gt;开头&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;结尾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;()&lt;/td&gt;&lt;td&gt;捕获&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;[^x]+&lt;/td&gt;&lt;td&gt;非x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;转义字符&quot;&gt;转义字符&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#转义字符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;转义字符用于表示不能直接显示的字符，比如后退键，回车键等，如在字符串转换双引号可以使用 &lt;font color=&quot;#FF0000&quot;&gt; \ &lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;










































































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;转义字符&lt;/th&gt;&lt;th&gt;意义&lt;/th&gt;&lt;th&gt;ASCII码值（十进制）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;\a&lt;/td&gt;&lt;td&gt;响铃(BEL)&lt;/td&gt;&lt;td&gt;007&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\b&lt;/td&gt;&lt;td&gt;退格(BS) ，将当前位置移到前一列&lt;/td&gt;&lt;td&gt;008&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\f&lt;/td&gt;&lt;td&gt;换页(FF)，将当前位置移到下页开头&lt;/td&gt;&lt;td&gt;012&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\n&lt;/td&gt;&lt;td&gt;换行(LF) ，将当前位置移到下一行开头&lt;/td&gt;&lt;td&gt;010&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\r&lt;/td&gt;&lt;td&gt;回车(CR) ，将当前位置移到本行开头&lt;/td&gt;&lt;td&gt;013&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\t&lt;/td&gt;&lt;td&gt;水平制表(HT) （跳到下一个TAB位置）&lt;/td&gt;&lt;td&gt;009&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\v&lt;/td&gt;&lt;td&gt;垂直制表(VT)&lt;/td&gt;&lt;td&gt;011&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\&lt;/td&gt;&lt;td&gt;代表一个反斜线字符&apos;&apos;&apos;&lt;/td&gt;&lt;td&gt;092&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&apos;&lt;/td&gt;&lt;td&gt;代表一个单引号（撇号）字符&lt;/td&gt;&lt;td&gt;039&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&quot;&lt;/td&gt;&lt;td&gt;代表一个双引号字符&lt;/td&gt;&lt;td&gt;034&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\0&lt;/td&gt;&lt;td&gt;空字符(NULL)&lt;/td&gt;&lt;td&gt;000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\ddd&lt;/td&gt;&lt;td&gt;表示 1~3 位十进制数对应的字符&lt;/td&gt;&lt;td&gt;d = 0~9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\xhh&lt;/td&gt;&lt;td&gt;表示 1~2 位十六进制数对应的字符&lt;/td&gt;&lt;td&gt;h = 0&lt;del&gt;9 a&lt;/del&gt;f A~F&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;🔔 &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;️⃣ \a 响铃（BEL）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello\aWorld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--HelloWorld&lt;/span&gt;
效果：有些旧版本终端会发出“滴”的声音 🔔
⚠️ 很多现代终端不会响&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;包括VScode
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;⌫ &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;️⃣ \b 退格（Backspace）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;ABC\bD&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--ABD&lt;/span&gt;
可以看到C没了&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;退格就是按一下退格键&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;就是你打字用来删字的按钮&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;📄 &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;️⃣ \f 换页（Form Feed）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello\fWorld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--World&lt;/span&gt;
效果：类似“分页”，多数终端看不出来
有些环境会清屏或分页
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;⏎&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;️⃣ \n 换行（最常用）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第一行\n第二行&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--第一行&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--第二行&lt;/span&gt;
和C语言是一样的
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;↩️ &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;️⃣ \r 回车（Return）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello\rLua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Lualo&lt;/span&gt;
解释：\r 回到行首&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;Lua 覆盖 Hello 的前 &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; 个字符
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;⇥&lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;️⃣ \t 制表符（Tab）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A\tB\tC&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--A    B    C&lt;/span&gt;
类似键盘 Tab 键
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;⬇️ &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;️⃣ \v 垂直制表（Vertical Tab）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello\vWorld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--Hello&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--World&lt;/span&gt;
效果：很少用&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;多数终端看不出区别
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;🔙 &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;️⃣ \ 反斜杠
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;C:\\Users\\Lua&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--C:\Users\Lua&lt;/span&gt;
因为：
\ 本身是转义符
要表示一个 \，必须写 \\
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;🧾 &lt;span class=&quot;token number&quot;&gt;9&lt;/span&gt;️⃣ \&apos; 单引号
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&apos;I\&apos;m Lua&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--I&apos;m Lua&lt;/span&gt;

🧾 🔟\&quot; 双引号
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;He said \&quot;Hello\&quot;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--He said &quot;Hello&quot;&lt;/span&gt;
这个不用多说了吧
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;\&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; 空字符（NULL）
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A\0B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--AB&lt;/span&gt;
效果：字符串中有一个“看不见”的字符
有些函数会截断字符串（C语言）
比如lua可以通过计算字符串的长度查看是否存在空字符
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;A\0B&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;\ddd &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 用 十进制数字 表示一个字符
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\65&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--A&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\101&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--e&lt;/span&gt;

\xhh &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 用 十六进制数字 表示一个字符
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\x41&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--A&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\x65&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--e&lt;/span&gt;

&lt;span class=&quot;token string&quot;&gt;&quot;\数字&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 用编号写字母
&lt;span class=&quot;token string&quot;&gt;&quot;\x数字&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; 用另一种数字写字母
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Lua 没有八进制字符转义（不像 C 语言)&lt;br&gt;
但 Lua 有“八进制数字字面量”（Lua 5.3+）和“十进制/十六进制字符转义”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;数字字面量（lua代码）&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;写法&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;十进制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0x41&lt;/td&gt;&lt;td&gt;十六进制&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0o101&lt;/td&gt;&lt;td&gt;八进制（Lua 5.3+）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0b1000001&lt;/td&gt;&lt;td&gt;二进制（Lua 5.3+）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;最常用的 5 个转义字符：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;




























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;转义&lt;/th&gt;&lt;th&gt;含义&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;\n&lt;/td&gt;&lt;td&gt;换行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\t&lt;/td&gt;&lt;td&gt;Tab&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\&lt;/td&gt;&lt;td&gt;反斜杠&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\ &quot;&lt;/td&gt;&lt;td&gt;双引号&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\ &apos;&lt;/td&gt;&lt;td&gt;单引号&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;进阶：&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;转义&lt;/th&gt;&lt;th&gt;用途&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;\r&lt;/td&gt;&lt;td&gt;回车（进度条）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\0&lt;/td&gt;&lt;td&gt;空字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\xhh&lt;/td&gt;&lt;td&gt;十六进制字符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;\ddd&lt;/td&gt;&lt;td&gt;八进制字符&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;事实上没有必要全部搞懂......写字和背字典是有区别的&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded><category>Lua</category><category>Lua</category></item><item><title>使用VSCode写Csharp的配置方法</title><link>https://huyangpahuo.vercel.app/posts/shi-yong-vscode-xie-csharp-de-pei-zhi-fang-fa/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shi-yong-vscode-xie-csharp-de-pei-zhi-fang-fa/</guid><description>本篇介绍VSCode里配置C#环境</description><pubDate>Wed, 04 Feb 2026 17:10:59 GMT</pubDate><content:encoded>&lt;h1 id=&quot;除了vs和ridervscode写c也是不错的选择&quot;&gt;除了VS和Rider,VScode写C#也是不错的选择&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#除了vs和ridervscode写c也是不错的选择&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;首先去官网下载----dotnet--sdk--10&quot;&gt;首先去官网下载    dotnet  SDK  10&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先去官网下载----dotnet--sdk--10&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://dotnet.microsoft.com/zh-cn/download&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;点击此处前往官网下载&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225221844942.webp&quot; alt=&quot;image-20251225221844942&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择你电脑的操作系统对应的版本下载即可&lt;/p&gt;
&lt;p&gt;完成后就可以 键盘输入 &lt;font color=&quot;Red&quot;&gt; win  +  R&lt;/font&gt;  进入  &lt;font color=&quot;Red&quot;&gt;cmd &lt;/font&gt; 窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222110903.webp&quot; alt=&quot;image-20251225222110903&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;在控制台输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dotnet --info
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222233255.webp&quot; alt=&quot;image-20251225222233255&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到我电脑上有好多版本,包括最新的 dotnet  10&lt;/p&gt;
&lt;p&gt;然后回到VScode&lt;/p&gt;
&lt;h2 id=&quot;给vscode安装插件&quot;&gt;给VScode安装插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#给vscode安装插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这里我就不一一介绍了,全都下载下来就对了(某些插件可能已经过期下架了,但一般这些比较火的不会只要有人维护)&lt;/p&gt;
&lt;h3 id=&quot;插件名--net-install-tool&quot;&gt;插件名: &lt;font color=&quot;Turquoise&quot;&gt; .NET Install Tool&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--net-install-tool&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222548271.webp&quot; alt=&quot;image-20251225222548271&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名-c&quot;&gt;插件名: &lt;font color=&quot;Turquoise&quot;&gt;C#&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名-c&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222702273.webp&quot; alt=&quot;image-20251225222702273&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名--c-dev-kit&quot;&gt;插件名:  &lt;font color=&quot;Turquoise&quot;&gt;C# Dev Kit&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--c-dev-kit&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222744158.webp&quot; alt=&quot;image-20251225222744158&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名--c-extensions&quot;&gt;插件名:  &lt;font color=&quot;Turquoise&quot;&gt;C# Extensions&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--c-extensions&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222832804.webp&quot; alt=&quot;image-20251225222832804&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名--c-snippets&quot;&gt;插件名:  &lt;font color=&quot;Turquoise&quot;&gt;C# Snippets&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--c-snippets&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225222922227.webp&quot; alt=&quot;image-20251225222922227&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名--c-xml-documentation-comments&quot;&gt;插件名:  &lt;font color=&quot;Turquoise&quot;&gt;C# XML Documentation Comments&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--c-xml-documentation-comments&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225223047351.webp&quot; alt=&quot;image-20251225223047351&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名--github-copilot-chat&quot;&gt;插件名:  &lt;font color=&quot;Turquoise&quot;&gt;GitHub Copilot Chat&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名--github-copilot-chat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225223236076.webp&quot; alt=&quot;image-20251225223236076&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;插件名code-runner&quot;&gt;插件名:	&lt;font color=&quot;Turquoise&quot;&gt;Code Runner&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名code-runner&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251227161831377.webp&quot; alt=&quot;image-20251227161831377&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;配置c环境&quot;&gt;配置C#环境&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置c环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先新建一个空文件夹并拖进VScode&lt;/p&gt;
&lt;p&gt;然后按照如图所示找到这个  “&lt;font color=&quot;Turquoise&quot;&gt;新建终端&lt;/font&gt;”&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225223614589.webp&quot; alt=&quot;image-20251225223614589&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在控制台输入如下语句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dotnet new console -n HelloWorld
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225223940739.webp&quot; alt=&quot;image-20251225223940739&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是如果你看过别的教程里的 就会知道 需要有 bin文件夹才行&lt;/p&gt;
&lt;p&gt;所以我们再次进入刚才的新创建的文件夹的路径&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;cd HelloWorld
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225224211649.webp&quot; alt=&quot;image-20251225224211649&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图所示,我们已经进入这个文件夹&lt;/p&gt;
&lt;p&gt;输入如下代码&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dotnet run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225224318898.webp&quot; alt=&quot;image-20251225224318898&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到左上角出现了bin文件夹   控制台也输出了  默认的语句  “ &lt;font color=&quot;Turquoise&quot;&gt;Hello, World!&lt;/font&gt; ”&lt;/p&gt;
&lt;p&gt;有些小伙伴可能听说了其他人的旧版本的代码运行方式,我确实也亲手试了一遍&lt;/p&gt;
&lt;p&gt;老版本是首先在VScode里输入   &lt;font color=&quot;Turquoise&quot;&gt;ctrl  +shift +p&lt;/font&gt;  后&lt;/p&gt;
&lt;p&gt;在输入栏里再输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;.NET: Generate Assets for Build and Debug
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225224946185.webp&quot; alt=&quot;image-20251225224946185&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225225212934.webp&quot; alt=&quot;image-20251225225212934&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们因为是新版本,所以选择“  &lt;font color=&quot;Turquoise&quot;&gt; 是&lt;/font&gt;  ”&lt;/p&gt;
&lt;p&gt;然后怎么用咧?&lt;/p&gt;
&lt;p&gt;首先我们进入默认的  &lt;font color=&quot;Turquoise&quot;&gt;Program.cs&lt;/font&gt; 文件&lt;/p&gt;
&lt;p&gt;假如我们直接点击右上角的小箭头(Run code,即运行代码)就会报错&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225225745394.webp&quot; alt=&quot;image-20251225225745394&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;需要点击这个(run project associated with this file   ,即运行所有与这个cs文件相关联的文件)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225225905472.webp&quot; alt=&quot;image-20251225225905472&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后出现这个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225230122246.webp&quot; alt=&quot;image-20251225230122246&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;最后就是结果&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225230150634.webp&quot; alt=&quot;image-20251225230150634&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里看你的需求&lt;/p&gt;
&lt;p&gt;选择直接运行还是调试后运行&lt;/p&gt;
&lt;p&gt;第一种: 直接输入  &lt;font color=&quot;Turquoise&quot;&gt;F5&lt;/font&gt;  键 运行并调试  或者选择刚才的   &lt;font color=&quot;Turquoise&quot;&gt;Debug   project associated with this file&lt;/font&gt; (与此文件关联的调试项目)&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225230258055.webp&quot; alt=&quot;image-20251225230258055&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;第二种:直接输入 &lt;font color=&quot;Turquoise&quot;&gt;Ctrl  + F5&lt;/font&gt;  直接运行  或者 选择刚才的  &lt;font color=&quot;Turquoise&quot;&gt;Run project associated with this file &lt;/font&gt;(运行与此文件关联的项目)&lt;/p&gt;
&lt;p&gt;和刚才一样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20251225230600684.webp&quot; alt=&quot;image-20251225230600684&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;终端中文乱码问题解决方案&quot;&gt;终端中文乱码问题解决方案&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#终端中文乱码问题解决方案&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;对于那些输出窗口有中文乱码的可以看看我的另一篇终端配置相关的blog,可以同时解决VScode Trae Cursor这三个的问题（因为后两个跟VScode没区别,连设置文件settings.json都一模一样)&lt;/p&gt;
&lt;p&gt;对了,还有一件事,大家可能发现按照咱们刚才的步骤在VScode里的C#控制台输出的中文是正常的,但是一到Trae和Cursor里就时乱码&lt;/p&gt;
&lt;p&gt;这个是因为三者在某些方面不太一样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260204234239623.webp&quot; alt=&quot;image-20260204234239623&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260204234306386.webp&quot; alt=&quot;image-20260204234306386&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260204234333464.webp&quot; alt=&quot;image-20260204234333464&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里也是C#的特别之处&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260204234617190.webp&quot; alt=&quot;image-20260204234617190&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260204234633901.webp&quot; alt=&quot;image-20260204234633901&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;所以我们有两种方案可以解决,看大家的喜好哦&lt;/p&gt;
&lt;h3 id=&quot;方案一废除调试f5功能直接输出结果&quot;&gt;方案一:废除调试F5功能,直接输出结果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#方案一废除调试f5功能直接输出结果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个是coderunner的功能,我们可以改一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205002434937.webp&quot; alt=&quot;image-20260205002434937&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到settings.json文件里的这一句,将其替换为下面这句&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205000029980.webp&quot; alt=&quot;image-20260205000029980&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;csharp&quot;: &quot;powershell -NoProfile -Command \&quot;[Console]::OutputEncoding=[Text.Encoding]::UTF8; dotnet run\&quot;&quot;,
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;什么,你不知道settings.json文件在哪?这里我三个都讲一遍吧&lt;/p&gt;
&lt;p&gt;但是我说实话,只用改VScode的就行,然后让其他两个同步VScode的设置就行了&lt;/p&gt;
&lt;h4 id=&quot;对于vscode&quot;&gt;对于VScode&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于vscode&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;文件-&gt;首选项-&gt;设置&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205001035859.webp&quot; alt=&quot;image-20260205001035859&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;点开这个像&lt;font color=&quot;#40E0D0&quot;&gt;书页&lt;/font&gt;一样的UI图标&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205001155495.webp&quot; alt=&quot;image-20260205001155495&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h4 id=&quot;对于cursor&quot;&gt;对于Cursor&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于cursor&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;文件-&gt;首选项-&gt;设置&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205000337468.webp&quot; alt=&quot;image-20260205000337468&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;点击“&lt;font color=&quot;#40E0D0&quot;&gt;...&lt;/font&gt;”号选择&lt;font color=&quot;#40E0D0&quot;&gt;打开设置(json)&lt;/font&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205000844013.webp&quot; alt=&quot;image-20260205000844013&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h4 id=&quot;对于trae&quot;&gt;对于Trae&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#对于trae&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;文件-&gt;首选项-&gt;设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205001411839.webp&quot; alt=&quot;image-20260205001411839&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击 &lt;font color=&quot;#40E0D0&quot;&gt;Editor设置 &lt;/font&gt;的  &lt;font color=&quot;#40E0D0&quot;&gt;去设置&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205001526644.webp&quot; alt=&quot;image-20260205001526644&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;和VScode一样的&lt;font color=&quot;#40E0D0&quot;&gt;小书页&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205001558592.webp&quot; alt=&quot;image-20260205001558592&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后做完这一切后我们只需要点击这个符号就可以了(之前直接点击会报错,现在可以了,点击会直接出结果并且不调试了)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205002313450.webp&quot; alt=&quot;image-20260205002313450&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;方案二保留调试f5功能不修改原本的json设置文件&quot;&gt;方案二:保留调试F5功能,不修改原本的json设置文件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#方案二保留调试f5功能不修改原本的json设置文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个方案也是比较通用的,保持刚才文件里的&quot;csharp&quot;: &quot;scriptcs&quot;不变&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205002409585.webp&quot; alt=&quot;image-20260205002409585&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;using System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Text&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;OutputEncoding &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Encoding&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;UTF8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                      					
Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;InputEncoding &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Encoding&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;UTF8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里我用一个C#程序示范一下,按Ctrl+F5执行代码&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;C#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;// 定义 ElemType 为 int 类型&lt;/span&gt;
using ElemType &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Int32&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
using System&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Text&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//定义顺序表类&lt;/span&gt;
public class SeqList
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    public List&lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt;ElemType&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new List&lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt;ElemType&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    public &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; length&lt;span class=&quot;token comment&quot;&gt;// 顺序表当前长度&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        get &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;//之所以构造函数,是因为实例化时会自动调用构造函数&lt;/span&gt;
    public &lt;span class=&quot;token function&quot;&gt;SeqList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;initList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;//初始化函数&lt;/span&gt;
    public &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;initList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new List&lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt;ElemType&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;//尾插法&lt;/span&gt;
    public &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;appendElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Add&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;//遍历&lt;/span&gt;
    public &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;listElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// foreach (var item in data)&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// {&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//     Console.WriteLine(item);&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// }&lt;/span&gt;
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;Join&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//删除&lt;/span&gt;
    public &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; pos&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; out ElemType e&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// out 参数必须赋值&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;length &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;空表&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; pos &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; length&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;删除数据位置有误&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;// 取出要删除的元素&lt;/span&gt;
        e &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;pos &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;//直接调用 List.RemoveAt,底层自动处理移位&lt;/span&gt;
        data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;RemoveAt&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;pos &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

class Program
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;Main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; args&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//---------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//在main函数里加上这两句&lt;/span&gt;
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;OutputEncoding &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Encoding&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;UTF8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                      					
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;InputEncoding &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; Encoding&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;UTF8&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//----------------------------------------------------------------------------&lt;/span&gt;
        SeqList list &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; new &lt;span class=&quot;token function&quot;&gt;SeqList&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 创建顺序表实例&lt;/span&gt;

        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;23&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;45&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;appendElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;88&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;顺序表的元素有:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;listElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 遍历顺序表&lt;/span&gt;

        ElemType deletedElem&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;deleteElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; out deletedElem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        list&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;listElem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 遍历顺序表&lt;/span&gt;
        Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;被删除的元素是:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; deletedElem&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/%E4%BD%BF%E7%94%A8VSCode%E5%86%99Csharp%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95/image-20260205003100841.webp&quot; alt=&quot;image-20260205003100841&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>电脑日常</category><category>VScode</category><category>C#</category></item><item><title>解决MongoDB无法连接问题</title><link>https://huyangpahuo.vercel.app/posts/jie-jue-mongodb-wu-fa-lian-jie-wen-ti/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/jie-jue-mongodb-wu-fa-lian-jie-wen-ti/</guid><description>本篇用于解决MongoDB无法连接的问题</description><pubDate>Mon, 02 Feb 2026 15:49:36 GMT</pubDate><content:encoded>&lt;h1 id=&quot;mongodb有的时候会抽风连接不上数据库&quot;&gt;MongoDB有的时候会抽风连接不上数据库&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#mongodb有的时候会抽风连接不上数据库&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;在VScode里之前看到这个插件于是我准备把这个连接到MongoDB 云端上的那个试一下插件能不能用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202155607483.webp&quot; alt=&quot;image-20260202155607483&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是今天发现连不上了,不知道怎么回事,我还以为是我一天到晚日本美国新加坡菲律宾节点反复横跳翻墙刷油管导致的&lt;/p&gt;
&lt;p&gt;于是我又去试试MongoDB自带的这个软件看看能不能连不上,因为之前我上个月用的这玩意搞的Twikoo的评论存储&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202155931793.webp&quot; alt=&quot;image-20260202155931793&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;结果是今天打开的时候居然连不上,试了好几次都不行,甚至VPN换了十几个节点都不行&lt;/p&gt;
&lt;p&gt;开始以为是梯子的问题,后来发现梯子很正常,ping  Google也能ping通&lt;/p&gt;
&lt;p&gt;于是我以为我的号被封了,登录看了下号还在不在,但是不知道为什么号和云端数据库还好好的就是连不上,ai说是因为CDN污染什么玩意的,我之前在寝室搞得这个,盲猜学校里的网估计和家里的不太一样&lt;/p&gt;
&lt;p&gt;于是我翻遍了教程也解决不了,烦死我了,MongoDB atlas真垃圾,都准备删掉库重新搞一个库了&lt;/p&gt;
&lt;p&gt;但是我晚上吃饭看mc主播玩生存服的视频的时候突然想起了以前遇到类似的事,就是用我的世界的微软官方启动器半天打不开一直报错而且更新不了,就是因为连不上官方的服务器,要不是因为这个原因我也不会去主动使用PCL和HMCL启动器&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202213544438.webp&quot; alt=&quot;image-20260202213544438&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当时在B站上有一个大佬说把DNS改为&lt;font color=&quot;#40E0D0&quot;&gt;4.2.2.2&lt;/font&gt;或者&lt;font color=&quot;#40E0D0&quot;&gt;4.2.2.1&lt;/font&gt;就大概可以连上MC官启给角色换新皮肤了,后来我试了几遍居然是真的,但是就是改DNS重启电脑后其他软件连不上网不知道怎么回事,所以觉得不方便就没用官启了&lt;/p&gt;
&lt;p&gt;就是在这个地方改&lt;/p&gt;
&lt;h2 id=&quot;-首先打开电脑的设置-并点击高级网络设置&quot;&gt;① 首先打开电脑的&lt;font color=&quot;#40E0D0&quot;&gt;设置&lt;/font&gt; 并点击&lt;font color=&quot;#40E0D0&quot;&gt;高级网络设置&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-首先打开电脑的设置-并点击高级网络设置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202215113939.webp&quot; alt=&quot;image-20260202215113939&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;-找到你当前连接的网络点击最右边的向下的小箭头&quot;&gt;② 找到你当前连接的网络,点击最右边的&lt;font color=&quot;#40E0D0&quot;&gt;向下的小箭头&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-找到你当前连接的网络点击最右边的向下的小箭头&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202220709477.webp&quot; alt=&quot;image-20260202220709477&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;③ 打开这个&lt;font color=&quot;#40E0D0&quot;&gt;更多适配器选项&lt;/font&gt;里的&lt;font color=&quot;#40E0D0&quot;&gt;编辑&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202221000195.webp&quot; alt=&quot;image-20260202221000195&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;-找到这个-internet协议版本-4并点击后选择属性&quot;&gt;④ 找到这个&lt;font color=&quot;#40E0D0&quot;&gt; Internet协议版本 4&lt;/font&gt;并&lt;font color=&quot;#40E0D0&quot;&gt;点击&lt;/font&gt;后选择&lt;font color=&quot;#40E0D0&quot;&gt;属性&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-找到这个-internet协议版本-4并点击后选择属性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(我家的买手机送的那个破路由器只支持IPV4,你们的网络要是也支持IPV6也可以自己看看)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202221221942.webp&quot; alt=&quot;image-20260202221221942&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;⑤ 在这里选择&lt;font color=&quot;#40E0D0&quot;&gt;使用下面的DNS服务器地址&lt;/font&gt; 并填入&lt;font color=&quot;#40E0D0&quot;&gt;DNS&lt;/font&gt;点击&lt;font color=&quot;#40E0D0&quot;&gt;确定&lt;/font&gt;保存&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202221853502.webp&quot; alt=&quot;image-20260202221853502&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我用的是Google的两个DNS,你们可以酌情挑选自己喜欢的,外国的需要挂代理或者梯子&lt;/p&gt;
&lt;h3 id=&quot;dns地址&quot;&gt;DNS地址&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#dns地址&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;-google-dns推荐&quot;&gt;① Google DNS（推荐）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-google-dns推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：8.8.8.8

备：8.8.4.4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;--level3-老牌dns&quot;&gt;②  Level3 (老牌DNS)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--level3-老牌dns&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：4.2.2.1

备：4.2.2.2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;--cloudflare延迟低国内外都不错&quot;&gt;③  Cloudflare（延迟低，国内外都不错）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--cloudflare延迟低国内外都不错&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：1.1.1.1

备：1.0.0.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;-阿里云-dns-alidns&quot;&gt;④ 阿里云 DNS (AliDNS)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-阿里云-dns-alidns&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：223.5.5.5

备：223.6.6.6
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;-腾讯云-dns-dnspod&quot;&gt;⑤ 腾讯云 DNS (DNSPod)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-腾讯云-dns-dnspod&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：119.29.29.29

备：182.254.116.116
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;-ibm-quad9-主打安全&quot;&gt;⑥ IBM Quad9 (主打安全)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-ibm-quad9-主打安全&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：9.9.9.9

备：149.112.112.112
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;--114-dns-老牌但有时会有广告劫持排在后面推荐&quot;&gt;⑦  114 DNS (老牌，但有时会有广告劫持，排在后面推荐)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#--114-dns-老牌但有时会有广告劫持排在后面推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;主：114.114.114.114

备：114.114.115.115
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;创建并连接mongodb&quot;&gt;创建并连接MongoDB&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#创建并连接mongodb&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先登录这个MongoDB的账号&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202210700452.webp&quot; alt=&quot;image-20260202210700452&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到这个位置即 &lt;code&gt;security(安全)&lt;/code&gt;-&gt;&lt;code&gt;database&amp;#x26;network access(数据库网络连接)&lt;/code&gt;-&gt;&lt;code&gt;add ip address(增加ip地址白名单)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202223447959.webp&quot; alt=&quot;image-20260202223447959&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里我们就添加测试用的那个&lt;code&gt;0.0.0.0/0&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;0.0.0.0/0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202223740519.webp&quot; alt=&quot;image-20260202223740519&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们点击 &lt;code&gt;database(数据库)&lt;/code&gt;-&gt;&lt;code&gt;clusters(数据库集群)&lt;/code&gt;,找到咱们的数据库,默认名字是&lt;code&gt;cluster0&lt;/code&gt;,点击&lt;font color=&quot;#40E0D0&quot;&gt;connect(数据库连接)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202224306068.webp&quot; alt=&quot;image-20260202224306068&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后点击&lt;font color=&quot;#40E0D0&quot;&gt;drivers(驱动)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202224858039.webp&quot; alt=&quot;image-20260202224858039&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;把我圈起来的这个地方复制下来,注意把这个&lt;font color=&quot;#40E0D0&quot;&gt;&amp;#x3C;db_password&gt;&lt;/font&gt;换成你自己的登录mongodb的密码(就是登录是啥密码这个就是啥密码)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202224927863.webp&quot; alt=&quot;image-20260202224927863&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在&lt;a href=&quot;https://www.mongodb.com/try/download/community-kubernetes-operator&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;mongodb compass&lt;/font&gt;&lt;/a&gt;这个软件里点击小加号添加数据库连接,之间粘贴进去,密码不要搞错了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202225242933.webp&quot; alt=&quot;image-20260202225242933&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;替换默认的那个为你们的复制内容然后保存并连接,此时就可以看到连接成功了!!!&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202225553686.webp&quot; alt=&quot;image-20260202225553686&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202225754486.webp&quot; alt=&quot;image-20260202225754486&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们再来试试VScode里的那个可不可以,这个插件连接原理和上面这个是一模一样的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/MongoDB/%E8%A7%A3%E5%86%B3MongoDB%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98/image-20260202230119628.webp&quot; alt=&quot;image-20260202230119628&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;非常好,可以看到连接也是可以的&lt;/p&gt;</content:encoded><category>MongoDB</category><category>MongoDB</category></item><item><title>变色按钮shader</title><link>https://huyangpahuo.vercel.app/posts/bian-se-an-niu-shader/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/bian-se-an-niu-shader/</guid><description>这篇是之前看一个大佬的作品,可惜找不到那个网站了,这里记载一下</description><pubDate>Sun, 01 Feb 2026 20:48:22 GMT</pubDate><content:encoded>&lt;h1 id=&quot;本篇的按钮效果来自哔哩哔哩某大佬&quot;&gt;本篇的按钮效果来自哔哩哔哩某大佬&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本篇的按钮效果来自哔哩哔哩某大佬&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;变色按钮&quot;&gt;变色按钮&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#变色按钮&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;-普通效果&quot;&gt;① 普通效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-普通效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Shader &quot;Unlit/BtnClickWaveShader&quot;
{
   Properties
    {
        _MainTex (&quot;Texture&quot;, 2D) = &quot;white&quot; {}
        _ColorLeft (&quot;ColorLeft&quot;, Color) = (0,1,0,1)
        _ColorRight (&quot;ColorRight&quot;, Color) = (0,0,1,1)
        _Radius (&quot;Radius&quot;, Float) = 1
        _RadiusThickness (&quot;RadiusThickness&quot;, Float) = 1
        _WaveAlpha (&quot;WaveAlpha&quot;, Range(0, 1)) = 0.5
        [HDR] _WaveColor (&quot;WaveColor&quot;, Color) = (1,1,1,1)
        [hideInInspector] _CircleScaleOffset (&quot;CircleScaleOffset&quot;, Float) = 1 // Width / Height
        [hideInInspector] _MouseUVPos (&quot;MouseUVPos&quot;, Vector) = (0,0,0,0)
    }
    SubShader
    {
        Tags { &quot;RenderType&quot;=&quot;Transparent&quot; &quot;Queue&quot;=&quot;Transparent&quot;}
        Blend SrcAlpha OneMinusSrcAlpha

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include &quot;UnityCG.cginc&quot;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float4 _ColorLeft;
            float4 _ColorRight;

           
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 shape = tex2D(_MainTex, i.uv);
                fixed4 col = fixed4(lerp(_ColorLeft, _ColorRight, i.uv.x).rgb, shape.a);
                return col;
            }
            ENDCG
        }
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include &quot;UnityCG.cginc&quot;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float4 _ColorLeft;
            float4 _ColorRight;
            float _Radius;
            float _RadiusThickness;
            float _CircleScaleOffset;
            float _WaveAlpha;
            float4 _WaveColor;
            float4 _MouseUVPos;

            fixed4 PixelColor(float2 uv)
            {
                // 将uv原点移到中心
                uv -= _MouseUVPos.xy;
                uv = uv * 2 - 1;
                // 离uv坐标原点的距离，排除屏幕长宽比、图片长宽比的影响
                float2 dv = float2(uv.x, uv.y)* float2(_ScreenParams.x / _ScreenParams.y * _CircleScaleOffset, 1);
                float d = sqrt(pow(dv.x, 2) + pow(dv.y, 2));
                // 用小圆减大圆 得到圆环
                fixed3 c = smoothstep(_Radius-_RadiusThickness, _Radius, d) - smoothstep(_Radius, _Radius+_RadiusThickness, d);

                return fixed4(c * _WaveColor.rgb, saturate(c.g)); // -0.5
            }

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 shape = tex2D(_MainTex, i.uv);
                fixed4 wave = PixelColor(i.uv);
                wave.rgb *= _WaveColor.rgb;
                wave.a *= shape.a * _WaveAlpha;
                return wave;
            }
            ENDCG
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;-带sdf效果&quot;&gt;② 带SDF效果&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-带sdf效果&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Shader &quot;Unlit/BtnClickWaveSDFShader&quot;
{
    Properties
    {
        _MainTex (&quot;Texture&quot;, 2D) = &quot;white&quot; {}
        _ColorLeft (&quot;ColorLeft&quot;, Color) = (0,1,0,1)
        _ColorRight (&quot;ColorRight&quot;, Color) = (0,0,1,1)
        [hideInInspector] _CircleScaleOffset (&quot;CircleScaleOffset&quot;, Float) = 1 // Width / Height
        [hideInInspector] _CirclePosOffset (&quot;CirclePosOffset&quot;, Vector) = (0,0,0,0)
        _Radius (&quot;Radius&quot;, Float) = 1.5
        _RadiusThickness (&quot;RadiusThickness&quot;, Float) = 0.2
        [HDR] _WaveColor (&quot;WaveColor&quot;, Color) = (1,1,1,1)
    }
    SubShader
    {
        Tags { &quot;RenderType&quot;=&quot;Transparent&quot; &quot;Queue&quot;=&quot;Transparent&quot;}
        Blend SrcAlpha OneMinusSrcAlpha

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include &quot;UnityCG.cginc&quot;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float4 _ColorLeft;
            float4 _ColorRight;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 shape = tex2D(_MainTex, i.uv);
                fixed4 col = fixed4(lerp(_ColorLeft, _ColorRight, i.uv.x).rgb, shape.a);
                return col;
            }
            ENDCG
        }
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include &quot;UnityCG.cginc&quot;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _CircleScaleOffset;
            float _Radius;
            float4 _CirclePosOffset;
            float _RadiusThickness;
            float4 _WaveColor;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            float sdCircle(float2 p, float r)
            {
                return length(p) - r;
            }
            float opAnnular(float sdf, float r)
            {
                return abs(sdf) - r;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 shape = tex2D(_MainTex, i.uv);
                // 全象限
                i.uv -= _CirclePosOffset.xy;
                i.uv.y = 1.0 - i.uv.y;
                i.uv = i.uv * 2 - 1;
                // 消除屏幕拉伸影响
                float w = _ScreenParams.x;
                float h = _ScreenParams.y;
                half co = w/h * _CircleScaleOffset;
                i.uv = float2(i.uv.x * co, i.uv.y);

                float step = 1.0 / w;
                fixed4 circle = smoothstep(step, -step, opAnnular(sdCircle(i.uv, _Radius) , _RadiusThickness));

                fixed4 col = fixed4(circle.rgb, shape.a);
                col.rgb = col.rgb * _WaveColor.rgb;
                col.a *= col.r;
                col.a = _WaveColor.a * col.a;
                
                return col;
            }
            ENDCG
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果图	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Shader/image-20260201233916124.webp&quot; alt=&quot;image-20260201233916124&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;圆角窗口&quot;&gt;圆角窗口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#圆角窗口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Shader &quot;Unlit/ImageRoundCorner&quot;
{
    Properties
    {
        [PerRendererData]_MainTex (&quot;Texture&quot;, 2D) = &quot;white&quot; {}
        _Color (&quot;Tint&quot;, Color) = (1,1,1,1)

        // 四个角的半径
        _Radius (&quot;Corner Radius (LTRB)&quot;, Vector) = (0.1, 0.1, 0.1, 0.1)

        // 边框
        _BorderWidth (&quot;Border Width&quot;, Float) = 0.0
        _BorderColor (&quot;Border Color&quot;, Color) = (1,1,1,1)

        // 全局透明度
        _Alpha (&quot;Alpha&quot;, Range(0,1)) = 1.0
    }

    SubShader
    {
        Tags
        {
            &quot;Queue&quot;=&quot;Transparent&quot;
            &quot;IgnoreProjector&quot;=&quot;True&quot;
            &quot;RenderType&quot;=&quot;Transparent&quot;
            &quot;PreviewType&quot;=&quot;Plane&quot;
            &quot;CanUseSpriteAtlas&quot;=&quot;True&quot;
        }

        Cull Off
        Lighting Off
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include &quot;UnityCG.cginc&quot;

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                float4 color : COLOR;
            };

            struct v2f
            {
                float4 pos : SV_POSITION;
                float2 uv : TEXCOORD0;
                float4 color : COLOR;
            };

            sampler2D _MainTex;
            float4 _MainTex_TexelSize;
            float4 _MainTex_ST;
            fixed4 _Color;

            float4 _Radius; // 左上、右上、右下、左下 半径
            float _BorderWidth;
            fixed4 _BorderColor;
            float _Alpha;

            v2f vert(appdata v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.color = v.color * _Color;
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv) * i.color;
                float2 uv = i.uv;
                float width = 1.0;
                float height = 1.0;

                float rL = _Radius.x; // 左上
                float rR = _Radius.y; // 右上
                float rB = _Radius.z; // 右下
                float rBL = _Radius.w; // 左下

                float b = _BorderWidth;

                // 四个角圆角+边框处理
                float2 p = uv;

                // 左下角
                if (p.x &amp;#x3C; rBL &amp;#x26;&amp;#x26; p.y &amp;#x3C; rBL)
                {
                    float d = distance(p, float2(rBL, rBL));
                    if (d &gt; rBL) col.a = 0;
                    else if (b &gt; 0 &amp;#x26;&amp;#x26; d &gt; rBL - b) col = _BorderColor;
                }

                // 左上角
                if (p.x &amp;#x3C; rL &amp;#x26;&amp;#x26; p.y &gt; 1 - rL)
                {
                    float d = distance(p, float2(rL, 1 - rL));
                    if (d &gt; rL) col.a = 0;
                    else if (b &gt; 0 &amp;#x26;&amp;#x26; d &gt; rL - b) col = _BorderColor;
                }

                // 右下角
                if (p.x &gt; 1 - rB &amp;#x26;&amp;#x26; p.y &amp;#x3C; rB)
                {
                    float d = distance(p, float2(1 - rB, rB));
                    if (d &gt; rB) col.a = 0;
                    else if (b &gt; 0 &amp;#x26;&amp;#x26; d &gt; rB - b) col = _BorderColor;
                }

                // 右上角
                if (p.x &gt; 1 - rR &amp;#x26;&amp;#x26; p.y &gt; 1 - rR)
                {
                    float d = distance(p, float2(1 - rR, 1 - rR));
                    if (d &gt; rR) col.a = 0;
                    else if (b &gt; 0 &amp;#x26;&amp;#x26; d &gt; rR - b) col = _BorderColor;
                }

                // 透明度控制
                col.a *= _Alpha;

                return col;
            }
            ENDCG
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;效果图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Unity/Shader/image-20260201234237217.webp&quot; alt=&quot;image-20260201234237217&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Unity</category><category>Shader</category></item><item><title>使用PowerToys和PSD_Codec来预览SVG和PSD图</title><link>https://huyangpahuo.vercel.app/posts/shi-yong-powertoys-he-psd-codec-lai-yu-lan-svg-he-psd-tu/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/shi-yong-powertoys-he-psd-codec-lai-yu-lan-svg-he-psd-tu/</guid><description>关于电脑默认无法预览psd,pdf,word和svg解决方案</description><pubDate>Wed, 28 Jan 2026 21:25:07 GMT</pubDate><content:encoded>&lt;h1 id=&quot;最近发现电脑下卡通图片的时候发现电脑不能预览--svg图片于是我发现了powertoys&quot;&gt;最近发现电脑下卡通图片的时候发现电脑不能预览  svg图片,于是我发现了PowerToys&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#最近发现电脑下卡通图片的时候发现电脑不能预览--svg图片于是我发现了powertoys&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;powertoys&quot;&gt;PowerToys&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#powertoys&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个软件还挺火的,,微里软气的&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/microsoft/PowerToys&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://github.com/microsoft/PowerToys&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128213136966.webp&quot; alt=&quot;image-20260128213136966&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128213208010.webp&quot; alt=&quot;image-20260128213208010&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们一般情况下电脑不会显示出  svg 图片,这个可以支持svg和pdf&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128213656096.webp&quot; alt=&quot;image-20260128213656096&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;开启后可以发现这个svg可以预览了  此时一张svg混入png其中........&lt;font color=&quot;#FFD700&quot;&gt;狗头狗头狗头&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128213914334.webp&quot; alt=&quot;image-20260128213914334&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;psd-codec&quot;&gt;PSD Codec&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#psd-codec&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;点击下载&lt;a href=&quot;https://18498-4-75157208.en.softonic.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;#40E0D0&quot;&gt;PSD Codec - Download&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个是我在B站上看到的一个软件,up主给了破解方式,大家自用就行了&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;原版安装后进入下面目录&lt;br&gt;
C:\Program Files\ArdfryImaging\PSD Codec&lt;br&gt;
双击那个大写的A图标exe文件……输入下面激活码中任何一个激活码，搞定！&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;mailto:tam@core.com&quot;&gt;tam@core.com&lt;/a&gt;&lt;br&gt;
MHXB-NCU3-HGYT-AC8J&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;mailto:2@2.com&quot;&gt;2@2.com&lt;/a&gt;&lt;br&gt;
G5BE-P5UR-J2QW-SRBQ&lt;/p&gt;
&lt;p&gt;作者：&lt;a href=&quot;https://www.bilibili.com/read/cv8055146/?opus_fallback=1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;殇の羽落&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;出处：bilibili&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128214628237.webp&quot; alt=&quot;image-20260128214628237&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个软件可以支持psd docx pptx 以及一大堆常见文件的缩略图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E4%BD%BF%E7%94%A8PowerToys%E5%92%8CPSD_Codec%E6%9D%A5%E9%A2%84%E8%A7%88SVG%E5%92%8CPSD%E5%9B%BE/image-20260128215000111.webp&quot; alt=&quot;image-20260128215000111&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;其实感觉用处不大,因为我找文件只看名字,但svg图片是非常有必要添加一个预览图的&lt;/p&gt;</content:encoded><category>软件推荐</category><category>PowerToys</category><category>PSD_Codec</category></item><item><title>VMware在Windows更新后造成电脑无法联网解决方案</title><link>https://huyangpahuo.vercel.app/posts/vmware-zai-windows-geng-xin-hou-zao-cheng-dian-nao-wu-fa-lian-wang-jie-jue-fang-an/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/vmware-zai-windows-geng-xin-hou-zao-cheng-dian-nao-wu-fa-lian-wang-jie-jue-fang-an/</guid><description>本篇提出vmware虚拟机会造成Windows更新后无法联网的问题的解决方案</description><pubDate>Wed, 28 Jan 2026 16:31:15 GMT</pubDate><content:encoded>&lt;h2 id=&quot;今天打开电脑玩终末地弹出来这个窗口&quot;&gt;今天打开电脑玩终末地弹出来这个窗口&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#今天打开电脑玩终末地弹出来这个窗口&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128163519419.webp&quot; alt=&quot;image-20260128163519419&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;于是我就去下载了这个升级程序,于是我掉进陷阱了&lt;/p&gt;
&lt;p&gt;升级完了之后之后,电脑连不上网了,当时这个  WiFi  的图标就没了&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128163819122.webp&quot; alt=&quot;image-20260128163819122&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;然后我就开始问好几个AI  找视频或者文本教程  把几乎所有方法都试了一遍 甚至初始化了系统网络就是没有一点用  我恨我自己手欠 明明点击 “忽略并继续”  游戏也是可以正常玩的 （ T￢T )&lt;/p&gt;
&lt;p&gt;于是准备去重装系统前我又不死心,又去翻B站里的评论看看有没有类似的情况,终于,找到了!!!   感谢这个大佬,这个是大佬的原话,给大佬跪了&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;超级好用，错误是56的话用这个&lt;/p&gt;
&lt;p&gt;如果没有WIFI图标连不上网了，错误代码是56&lt;/p&gt;
&lt;p&gt;（计算机管理—设备管理器—网路适配器—下Wi-Fi有黄色感叹号，双击里面显示设备状态出现错误代码56，可以查看自己的错误代码）&lt;/p&gt;
&lt;p&gt;可以在点win+r打开里输入：regedit&lt;/p&gt;
&lt;p&gt;进入注册表删除这个HKEY_CLASSES_ROOT\CLSID{3d09c1ca-2bcc-40b7-b9bb-3f3ec143a87b}。&lt;/p&gt;
&lt;p&gt;注意CLSID是“C”开头&quot;.&quot;不是，要在翻到下面才看的到，亲测好了。大家可以试一试。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;现在网络又回来了&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128164935652.webp&quot; alt=&quot;image-20260128164935652&quot; style=&quot;zoom:33%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128165650338.webp&quot; alt=&quot;image-20260128165650338&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;你可以看到有些你们比较陌生或者熟悉的网络比如VMware------没错,这玩意就是罪魁祸首,但是我当时不知道电脑上的虚拟机居然会夺舍实体机的网络,这个后面再说,如果你们之前也下载了虚拟机后遇到了这个问题也可以看看&lt;/p&gt;
&lt;h2 id=&quot;-查找错误代号是否56&quot;&gt;① 查找错误代号是否56&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-查找错误代号是否56&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为在此之前问AI试错的时候我已经知道我的网络问题是56了,但就是不知道问题出在哪&lt;/p&gt;
&lt;p&gt;大家可以在这个地方看自己的网络问题号&lt;/p&gt;
&lt;p&gt;首先  &lt;font color=&quot;#FF0000&quot;&gt; win+X  &lt;/font&gt; 点击 设备管理器&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128165540656.webp&quot; alt=&quot;image-20260128165540656&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;找到电脑上的网卡比如Inter wifi 6 ax201,此时你们的应该图标右下角会有一个三角形的黄色警告  而且其他的子驱动基本上也全都会出现警告,右键这个inter驱动不要删除也不要禁用再启用更不要更新,我已经试过了没有用的&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128165843749.webp&quot; alt=&quot;image-20260128165843749&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;直接&lt;font color=&quot;#FF0000&quot;&gt;右键&lt;/font&gt;点击&lt;font color=&quot;#FF0000&quot;&gt;属性&lt;/font&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128170142472.webp&quot; alt=&quot;image-20260128170142472&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;在此之前我这里显示的是错误56,不过现在恢复正常了&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128170359255.webp&quot; alt=&quot;image-20260128170359255&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;h2 id=&quot;-删除注册表&quot;&gt;② 删除注册表&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-删除注册表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这里就按照大佬的步骤,把VMware的注册表删了&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128164400799.webp&quot; alt=&quot;image-20260128164400799&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;自己找到这个注册表路径,然后直接删掉,注意,仔细一个字一个字的核对,千万不要删错了,这里我已经删掉了&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;HKEY_CLASSES_ROOT\CLSID{3d09c1ca-2bcc-40b7-b9bb-3f3ec143a87b}&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128171123075.webp&quot; alt=&quot;image-20260128171123075&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;然后重启电脑,稍等片刻就可以看到WiFi的图标又出现了!!!&lt;/p&gt;
&lt;p&gt;电脑本体网络是没有问题了&lt;/p&gt;
&lt;p&gt;我们看看虚拟机内部联网此时是否正常&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128171758487.webp&quot; alt=&quot;image-20260128171758487&quot; style=&quot;zoom: 25%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/VMware%E5%9C%A8Windows%E6%9B%B4%E6%96%B0%E5%90%8E%E9%80%A0%E6%88%90%E7%94%B5%E8%84%91%E6%97%A0%E6%B3%95%E8%81%94%E7%BD%91%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/image-20260128172234740.webp&quot; alt=&quot;image-20260128172234740&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;可以看到kali和ubuntu联网正常&lt;/p&gt;
&lt;p&gt;这里我只能解决我这种装了VMware虚拟机的电脑的问题,其他的错误代码比如43或者是10请自行查找其他方案&lt;/p&gt;</content:encoded><category>电脑日常</category><category>VMware</category><category>Diary</category></item><item><title>Typora 免费注册</title><link>https://huyangpahuo.vercel.app/posts/typora-mian-fei-zhu-ce/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/typora-mian-fei-zhu-ce/</guid><description>typora的破解</description><pubDate>Mon, 12 Jan 2026 20:07:38 GMT</pubDate><content:encoded>&lt;h1 id=&quot;typora-103破解&quot;&gt;Typora 1.0.3破解&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#typora-103破解&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;(转载自知乎的 &lt;a href=&quot;https://www.zhihu.com/people/xiaoyans528&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;小焱&lt;/font&gt;&lt;/a&gt; 大佬),这里记载一下方便以后换电脑查找&lt;/p&gt;
&lt;h2 id=&quot;-替换文件安装地址&quot;&gt;① &lt;strong&gt;替换文件安装地址&lt;/strong&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-替换文件安装地址&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://pan.quark.cn/s/d48c21f5c4cc&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;破解替换文件下载地址&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E5%85%8D%E8%B4%B9%E6%B3%A8%E5%86%8C/v2-d1a8d9459144bc88100b1dcea856ce48_1440w.webp&quot; alt=&quot;img&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;历史版更简单一点，只要双击安装完成就能直接用&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E5%85%8D%E8%B4%B9%E6%B3%A8%E5%86%8C/v2-02824ea78d419a1544963ee963f87caa_1440w.webp&quot; alt=&quot;img&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;h2 id=&quot;-先安装typora&quot;&gt;② 先安装typora&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-先安装typora&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;安装好后，把文件目录中的 &lt;font color=&quot;Turquoise&quot;&gt;  app.asar.text&lt;/font&gt;  改成 &lt;font color=&quot;Turquoise&quot;&gt;app.asar&lt;/font&gt; 文件&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E5%85%8D%E8%B4%B9%E6%B3%A8%E5%86%8C/v2-62ca542ff8a3382d4df12755fc313533_1440w.webp&quot; alt=&quot;img&quot; style=&quot;zoom:80%;&quot;&gt;
&lt;p&gt;&lt;em&gt;并拷贝到typora安装路径Typora\resources 下替换&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;参考路径：
C:\Program Files\Typora\resources

DZTX2H-6MCQZT-QL4GCT-5EBWFX
G7LPKN-HP4NLD-FA3BGF-6JDQ5R
3MH4Y8-YJWT37-G5JL9Y-UHNQDJ
85ZPHY-ELQ9FQ-94J3VP-D92YLU
VEZ7NV-USYN3G-8TL2N3-DADUG4
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;1、打开 typora ，点击“输入序列号”&lt;/p&gt;
&lt;p&gt;序列号已经在上面提供了&lt;/p&gt;
&lt;p&gt;2、邮箱一栏中任意填写（但须保证邮箱地址格式正确），输入序列号(在key.txt文件中，任选一条)，点击“激活”&lt;/p&gt;
&lt;p&gt;3、出现已激活即可&lt;/p&gt;
&lt;p&gt;最后就可以用了&lt;/p&gt;
&lt;h2 id=&quot;-如果以前有安装过下面的方法是卸载方法&quot;&gt;③ 如果以前有安装过，下面的方法是卸载方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-如果以前有安装过下面的方法是卸载方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;先卸载当前的Typora,然后删注册表&lt;/p&gt;
&lt;p&gt;按下“Win + R”组合键，输入“regedit”后，按下回车键，打开注册表编辑器&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E5%85%8D%E8%B4%B9%E6%B3%A8%E5%86%8C/v2-2932254cf658870816caf3a36134d30c_1440w.webp&quot; alt=&quot;img&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;找到“HKEY-CURRENT-USER”文件夹下的“software”文件夹&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/Typora%E5%85%8D%E8%B4%B9%E6%B3%A8%E5%86%8C/v2-d1909604276b1f1400ee74821bd54f92_1440w.webp&quot; alt=&quot;img&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;然后找到&lt;code&gt;typora&lt;/code&gt; 相关的彻底卸载完就可以再次安装使用了&lt;/p&gt;</content:encoded><category>软件推荐</category><category>Typora</category></item><item><title>WinRAR专业版免费注册</title><link>https://huyangpahuo.vercel.app/posts/winrar-zhuan-ye-ban-mian-fei-zhu-ce/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/winrar-zhuan-ye-ban-mian-fei-zhu-ce/</guid><description>本篇用一个脚本激活winrar专业版</description><pubDate>Sun, 11 Jan 2026 20:07:38 GMT</pubDate><content:encoded>&lt;h1 id=&quot;这个本身是免费的不过高级版功能更多&quot;&gt;这个本身是免费的,不过高级版功能更多&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这个本身是免费的不过高级版功能更多&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;方法来自 &lt;a href=&quot;https://gist.github.com/MuhammadSaim/de84d1ca59952cf1efaa8c061aab81a1&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;MuhammadSaim&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个注册起来非常非常简单   直接在记事本中粘贴这些东西然后将 txt文件  重命名为  rarreg.key  然后拖到文件的下载路径即可&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;RAR registration data
WinRAR
Unlimited Company License
UID=4b914fb772c8376bf571
6412212250f5711ad072cf351cfa39e2851192daf8a362681bbb1d
cd48da1d14d995f0bbf960fce6cb5ffde62890079861be57638717
7131ced835ed65cc743d9777f2ea71a8e32c7e593cf66794343565
b41bcf56929486b8bcdac33d50ecf773996052598f1f556defffbd
982fbe71e93df6b6346c37a3890f3c7edc65d7f5455470d13d1190
6e6fb824bcf25f155547b5fc41901ad58c0992f570be1cf5608ba9
aef69d48c864bcd72d15163897773d314187f6a9af350808719796
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>软件推荐</category><category>WinRAR</category></item><item><title>C语言小玩具--学生管理系统</title><link>https://huyangpahuo.vercel.app/posts/c-yu-yan-xiao-wan-ju-xue-sheng-guan-li-xi-tong/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/c-yu-yan-xiao-wan-ju-xue-sheng-guan-li-xi-tong/</guid><description>之前搓的C语言小玩具</description><pubDate>Thu, 08 Jan 2026 19:25:59 GMT</pubDate><content:encoded>&lt;p&gt;说起来,这个还是我大二的课程作业&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;span&gt;137&lt;/span&gt;&lt;span&gt;138&lt;/span&gt;&lt;span&gt;139&lt;/span&gt;&lt;span&gt;140&lt;/span&gt;&lt;span&gt;141&lt;/span&gt;&lt;span&gt;142&lt;/span&gt;&lt;span&gt;143&lt;/span&gt;&lt;span&gt;144&lt;/span&gt;&lt;span&gt;145&lt;/span&gt;&lt;span&gt;146&lt;/span&gt;&lt;span&gt;147&lt;/span&gt;&lt;span&gt;148&lt;/span&gt;&lt;span&gt;149&lt;/span&gt;&lt;span&gt;150&lt;/span&gt;&lt;span&gt;151&lt;/span&gt;&lt;span&gt;152&lt;/span&gt;&lt;span&gt;153&lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;155&lt;/span&gt;&lt;span&gt;156&lt;/span&gt;&lt;span&gt;157&lt;/span&gt;&lt;span&gt;158&lt;/span&gt;&lt;span&gt;159&lt;/span&gt;&lt;span&gt;160&lt;/span&gt;&lt;span&gt;161&lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;163&lt;/span&gt;&lt;span&gt;164&lt;/span&gt;&lt;span&gt;165&lt;/span&gt;&lt;span&gt;166&lt;/span&gt;&lt;span&gt;167&lt;/span&gt;&lt;span&gt;168&lt;/span&gt;&lt;span&gt;169&lt;/span&gt;&lt;span&gt;170&lt;/span&gt;&lt;span&gt;171&lt;/span&gt;&lt;span&gt;172&lt;/span&gt;&lt;span&gt;173&lt;/span&gt;&lt;span&gt;174&lt;/span&gt;&lt;span&gt;175&lt;/span&gt;&lt;span&gt;176&lt;/span&gt;&lt;span&gt;177&lt;/span&gt;&lt;span&gt;178&lt;/span&gt;&lt;span&gt;179&lt;/span&gt;&lt;span&gt;180&lt;/span&gt;&lt;span&gt;181&lt;/span&gt;&lt;span&gt;182&lt;/span&gt;&lt;span&gt;183&lt;/span&gt;&lt;span&gt;184&lt;/span&gt;&lt;span&gt;185&lt;/span&gt;&lt;span&gt;186&lt;/span&gt;&lt;span&gt;187&lt;/span&gt;&lt;span&gt;188&lt;/span&gt;&lt;span&gt;189&lt;/span&gt;&lt;span&gt;190&lt;/span&gt;&lt;span&gt;191&lt;/span&gt;&lt;span&gt;192&lt;/span&gt;&lt;span&gt;193&lt;/span&gt;&lt;span&gt;194&lt;/span&gt;&lt;span&gt;195&lt;/span&gt;&lt;span&gt;196&lt;/span&gt;&lt;span&gt;197&lt;/span&gt;&lt;span&gt;198&lt;/span&gt;&lt;span&gt;199&lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt;201&lt;/span&gt;&lt;span&gt;202&lt;/span&gt;&lt;span&gt;203&lt;/span&gt;&lt;span&gt;204&lt;/span&gt;&lt;span&gt;205&lt;/span&gt;&lt;span&gt;206&lt;/span&gt;&lt;span&gt;207&lt;/span&gt;&lt;span&gt;208&lt;/span&gt;&lt;span&gt;209&lt;/span&gt;&lt;span&gt;210&lt;/span&gt;&lt;span&gt;211&lt;/span&gt;&lt;span&gt;212&lt;/span&gt;&lt;span&gt;213&lt;/span&gt;&lt;span&gt;214&lt;/span&gt;&lt;span&gt;215&lt;/span&gt;&lt;span&gt;216&lt;/span&gt;&lt;span&gt;217&lt;/span&gt;&lt;span&gt;218&lt;/span&gt;&lt;span&gt;219&lt;/span&gt;&lt;span&gt;220&lt;/span&gt;&lt;span&gt;221&lt;/span&gt;&lt;span&gt;222&lt;/span&gt;&lt;span&gt;223&lt;/span&gt;&lt;span&gt;224&lt;/span&gt;&lt;span&gt;225&lt;/span&gt;&lt;span&gt;226&lt;/span&gt;&lt;span&gt;227&lt;/span&gt;&lt;span&gt;228&lt;/span&gt;&lt;span&gt;229&lt;/span&gt;&lt;span&gt;230&lt;/span&gt;&lt;span&gt;231&lt;/span&gt;&lt;span&gt;232&lt;/span&gt;&lt;span&gt;233&lt;/span&gt;&lt;span&gt;234&lt;/span&gt;&lt;span&gt;235&lt;/span&gt;&lt;span&gt;236&lt;/span&gt;&lt;span&gt;237&lt;/span&gt;&lt;span&gt;238&lt;/span&gt;&lt;span&gt;239&lt;/span&gt;&lt;span&gt;240&lt;/span&gt;&lt;span&gt;241&lt;/span&gt;&lt;span&gt;242&lt;/span&gt;&lt;span&gt;243&lt;/span&gt;&lt;span&gt;244&lt;/span&gt;&lt;span&gt;245&lt;/span&gt;&lt;span&gt;246&lt;/span&gt;&lt;span&gt;247&lt;/span&gt;&lt;span&gt;248&lt;/span&gt;&lt;span&gt;249&lt;/span&gt;&lt;span&gt;250&lt;/span&gt;&lt;span&gt;251&lt;/span&gt;&lt;span&gt;252&lt;/span&gt;&lt;span&gt;253&lt;/span&gt;&lt;span&gt;254&lt;/span&gt;&lt;span&gt;255&lt;/span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;257&lt;/span&gt;&lt;span&gt;258&lt;/span&gt;&lt;span&gt;259&lt;/span&gt;&lt;span&gt;260&lt;/span&gt;&lt;span&gt;261&lt;/span&gt;&lt;span&gt;262&lt;/span&gt;&lt;span&gt;263&lt;/span&gt;&lt;span&gt;264&lt;/span&gt;&lt;span&gt;265&lt;/span&gt;&lt;span&gt;266&lt;/span&gt;&lt;span&gt;267&lt;/span&gt;&lt;span&gt;268&lt;/span&gt;&lt;span&gt;269&lt;/span&gt;&lt;span&gt;270&lt;/span&gt;&lt;span&gt;271&lt;/span&gt;&lt;span&gt;272&lt;/span&gt;&lt;span&gt;273&lt;/span&gt;&lt;span&gt;274&lt;/span&gt;&lt;span&gt;275&lt;/span&gt;&lt;span&gt;276&lt;/span&gt;&lt;span&gt;277&lt;/span&gt;&lt;span&gt;278&lt;/span&gt;&lt;span&gt;279&lt;/span&gt;&lt;span&gt;280&lt;/span&gt;&lt;span&gt;281&lt;/span&gt;&lt;span&gt;282&lt;/span&gt;&lt;span&gt;283&lt;/span&gt;&lt;span&gt;284&lt;/span&gt;&lt;span&gt;285&lt;/span&gt;&lt;span&gt;286&lt;/span&gt;&lt;span&gt;287&lt;/span&gt;&lt;span&gt;288&lt;/span&gt;&lt;span&gt;289&lt;/span&gt;&lt;span&gt;290&lt;/span&gt;&lt;span&gt;291&lt;/span&gt;&lt;span&gt;292&lt;/span&gt;&lt;span&gt;293&lt;/span&gt;&lt;span&gt;294&lt;/span&gt;&lt;span&gt;295&lt;/span&gt;&lt;span&gt;296&lt;/span&gt;&lt;span&gt;297&lt;/span&gt;&lt;span&gt;298&lt;/span&gt;&lt;span&gt;299&lt;/span&gt;&lt;span&gt;300&lt;/span&gt;&lt;span&gt;301&lt;/span&gt;&lt;span&gt;302&lt;/span&gt;&lt;span&gt;303&lt;/span&gt;&lt;span&gt;304&lt;/span&gt;&lt;span&gt;305&lt;/span&gt;&lt;span&gt;306&lt;/span&gt;&lt;span&gt;307&lt;/span&gt;&lt;span&gt;308&lt;/span&gt;&lt;span&gt;309&lt;/span&gt;&lt;span&gt;310&lt;/span&gt;&lt;span&gt;311&lt;/span&gt;&lt;span&gt;312&lt;/span&gt;&lt;span&gt;313&lt;/span&gt;&lt;span&gt;314&lt;/span&gt;&lt;span&gt;315&lt;/span&gt;&lt;span&gt;316&lt;/span&gt;&lt;span&gt;317&lt;/span&gt;&lt;span&gt;318&lt;/span&gt;&lt;span&gt;319&lt;/span&gt;&lt;span&gt;320&lt;/span&gt;&lt;span&gt;321&lt;/span&gt;&lt;span&gt;322&lt;/span&gt;&lt;span&gt;323&lt;/span&gt;&lt;span&gt;324&lt;/span&gt;&lt;span&gt;325&lt;/span&gt;&lt;span&gt;326&lt;/span&gt;&lt;span&gt;327&lt;/span&gt;&lt;span&gt;328&lt;/span&gt;&lt;span&gt;329&lt;/span&gt;&lt;span&gt;330&lt;/span&gt;&lt;span&gt;331&lt;/span&gt;&lt;span&gt;332&lt;/span&gt;&lt;span&gt;333&lt;/span&gt;&lt;span&gt;334&lt;/span&gt;&lt;span&gt;335&lt;/span&gt;&lt;span&gt;336&lt;/span&gt;&lt;span&gt;337&lt;/span&gt;&lt;span&gt;338&lt;/span&gt;&lt;span&gt;339&lt;/span&gt;&lt;span&gt;340&lt;/span&gt;&lt;span&gt;341&lt;/span&gt;&lt;span&gt;342&lt;/span&gt;&lt;span&gt;343&lt;/span&gt;&lt;span&gt;344&lt;/span&gt;&lt;span&gt;345&lt;/span&gt;&lt;span&gt;346&lt;/span&gt;&lt;span&gt;347&lt;/span&gt;&lt;span&gt;348&lt;/span&gt;&lt;span&gt;349&lt;/span&gt;&lt;span&gt;350&lt;/span&gt;&lt;span&gt;351&lt;/span&gt;&lt;span&gt;352&lt;/span&gt;&lt;span&gt;353&lt;/span&gt;&lt;span&gt;354&lt;/span&gt;&lt;span&gt;355&lt;/span&gt;&lt;span&gt;356&lt;/span&gt;&lt;span&gt;357&lt;/span&gt;&lt;span&gt;358&lt;/span&gt;&lt;span&gt;359&lt;/span&gt;&lt;span&gt;360&lt;/span&gt;&lt;span&gt;361&lt;/span&gt;&lt;span&gt;362&lt;/span&gt;&lt;span&gt;363&lt;/span&gt;&lt;span&gt;364&lt;/span&gt;&lt;span&gt;365&lt;/span&gt;&lt;span&gt;366&lt;/span&gt;&lt;span&gt;367&lt;/span&gt;&lt;span&gt;368&lt;/span&gt;&lt;span&gt;369&lt;/span&gt;&lt;span&gt;370&lt;/span&gt;&lt;span&gt;371&lt;/span&gt;&lt;span&gt;372&lt;/span&gt;&lt;span&gt;373&lt;/span&gt;&lt;span&gt;374&lt;/span&gt;&lt;span&gt;375&lt;/span&gt;&lt;span&gt;376&lt;/span&gt;&lt;span&gt;377&lt;/span&gt;&lt;span&gt;378&lt;/span&gt;&lt;span&gt;379&lt;/span&gt;&lt;span&gt;380&lt;/span&gt;&lt;span&gt;381&lt;/span&gt;&lt;span&gt;382&lt;/span&gt;&lt;span&gt;383&lt;/span&gt;&lt;span&gt;384&lt;/span&gt;&lt;span&gt;385&lt;/span&gt;&lt;span&gt;386&lt;/span&gt;&lt;span&gt;387&lt;/span&gt;&lt;span&gt;388&lt;/span&gt;&lt;span&gt;389&lt;/span&gt;&lt;span&gt;390&lt;/span&gt;&lt;span&gt;391&lt;/span&gt;&lt;span&gt;392&lt;/span&gt;&lt;span&gt;393&lt;/span&gt;&lt;span&gt;394&lt;/span&gt;&lt;span&gt;395&lt;/span&gt;&lt;span&gt;396&lt;/span&gt;&lt;span&gt;397&lt;/span&gt;&lt;span&gt;398&lt;/span&gt;&lt;span&gt;399&lt;/span&gt;&lt;span&gt;400&lt;/span&gt;&lt;span&gt;401&lt;/span&gt;&lt;span&gt;402&lt;/span&gt;&lt;span&gt;403&lt;/span&gt;&lt;span&gt;404&lt;/span&gt;&lt;span&gt;405&lt;/span&gt;&lt;span&gt;406&lt;/span&gt;&lt;span&gt;407&lt;/span&gt;&lt;span&gt;408&lt;/span&gt;&lt;span&gt;409&lt;/span&gt;&lt;span&gt;410&lt;/span&gt;&lt;span&gt;411&lt;/span&gt;&lt;span&gt;412&lt;/span&gt;&lt;span&gt;413&lt;/span&gt;&lt;span&gt;414&lt;/span&gt;&lt;span&gt;415&lt;/span&gt;&lt;span&gt;416&lt;/span&gt;&lt;span&gt;417&lt;/span&gt;&lt;span&gt;418&lt;/span&gt;&lt;span&gt;419&lt;/span&gt;&lt;span&gt;420&lt;/span&gt;&lt;span&gt;421&lt;/span&gt;&lt;span&gt;422&lt;/span&gt;&lt;span&gt;423&lt;/span&gt;&lt;span&gt;424&lt;/span&gt;&lt;span&gt;425&lt;/span&gt;&lt;span&gt;426&lt;/span&gt;&lt;span&gt;427&lt;/span&gt;&lt;span&gt;428&lt;/span&gt;&lt;span&gt;429&lt;/span&gt;&lt;span&gt;430&lt;/span&gt;&lt;span&gt;431&lt;/span&gt;&lt;span&gt;432&lt;/span&gt;&lt;span&gt;433&lt;/span&gt;&lt;span&gt;434&lt;/span&gt;&lt;span&gt;435&lt;/span&gt;&lt;span&gt;436&lt;/span&gt;&lt;span&gt;437&lt;/span&gt;&lt;span&gt;438&lt;/span&gt;&lt;span&gt;439&lt;/span&gt;&lt;span&gt;440&lt;/span&gt;&lt;span&gt;441&lt;/span&gt;&lt;span&gt;442&lt;/span&gt;&lt;span&gt;443&lt;/span&gt;&lt;span&gt;444&lt;/span&gt;&lt;span&gt;445&lt;/span&gt;&lt;span&gt;446&lt;/span&gt;&lt;span&gt;447&lt;/span&gt;&lt;span&gt;448&lt;/span&gt;&lt;span&gt;449&lt;/span&gt;&lt;span&gt;450&lt;/span&gt;&lt;span&gt;451&lt;/span&gt;&lt;span&gt;452&lt;/span&gt;&lt;span&gt;453&lt;/span&gt;&lt;span&gt;454&lt;/span&gt;&lt;span&gt;455&lt;/span&gt;&lt;span&gt;456&lt;/span&gt;&lt;span&gt;457&lt;/span&gt;&lt;span&gt;458&lt;/span&gt;&lt;span&gt;459&lt;/span&gt;&lt;span&gt;460&lt;/span&gt;&lt;span&gt;461&lt;/span&gt;&lt;span&gt;462&lt;/span&gt;&lt;span&gt;463&lt;/span&gt;&lt;span&gt;464&lt;/span&gt;&lt;span&gt;465&lt;/span&gt;&lt;span&gt;466&lt;/span&gt;&lt;span&gt;467&lt;/span&gt;&lt;span&gt;468&lt;/span&gt;&lt;span&gt;469&lt;/span&gt;&lt;span&gt;470&lt;/span&gt;&lt;span&gt;471&lt;/span&gt;&lt;span&gt;472&lt;/span&gt;&lt;span&gt;473&lt;/span&gt;&lt;span&gt;474&lt;/span&gt;&lt;span&gt;475&lt;/span&gt;&lt;span&gt;476&lt;/span&gt;&lt;span&gt;477&lt;/span&gt;&lt;span&gt;478&lt;/span&gt;&lt;span&gt;479&lt;/span&gt;&lt;span&gt;480&lt;/span&gt;&lt;span&gt;481&lt;/span&gt;&lt;span&gt;482&lt;/span&gt;&lt;span&gt;483&lt;/span&gt;&lt;span&gt;484&lt;/span&gt;&lt;span&gt;485&lt;/span&gt;&lt;span&gt;486&lt;/span&gt;&lt;span&gt;487&lt;/span&gt;&lt;span&gt;488&lt;/span&gt;&lt;span&gt;489&lt;/span&gt;&lt;span&gt;490&lt;/span&gt;&lt;span&gt;491&lt;/span&gt;&lt;span&gt;492&lt;/span&gt;&lt;span&gt;493&lt;/span&gt;&lt;span&gt;494&lt;/span&gt;&lt;span&gt;495&lt;/span&gt;&lt;span&gt;496&lt;/span&gt;&lt;span&gt;497&lt;/span&gt;&lt;span&gt;498&lt;/span&gt;&lt;span&gt;499&lt;/span&gt;&lt;span&gt;500&lt;/span&gt;&lt;span&gt;501&lt;/span&gt;&lt;span&gt;502&lt;/span&gt;&lt;span&gt;503&lt;/span&gt;&lt;span&gt;504&lt;/span&gt;&lt;span&gt;505&lt;/span&gt;&lt;span&gt;506&lt;/span&gt;&lt;span&gt;507&lt;/span&gt;&lt;span&gt;508&lt;/span&gt;&lt;span&gt;509&lt;/span&gt;&lt;span&gt;510&lt;/span&gt;&lt;span&gt;511&lt;/span&gt;&lt;span&gt;512&lt;/span&gt;&lt;span&gt;513&lt;/span&gt;&lt;span&gt;514&lt;/span&gt;&lt;span&gt;515&lt;/span&gt;&lt;span&gt;516&lt;/span&gt;&lt;span&gt;517&lt;/span&gt;&lt;span&gt;518&lt;/span&gt;&lt;span&gt;519&lt;/span&gt;&lt;span&gt;520&lt;/span&gt;&lt;span&gt;521&lt;/span&gt;&lt;span&gt;522&lt;/span&gt;&lt;span&gt;523&lt;/span&gt;&lt;span&gt;524&lt;/span&gt;&lt;span&gt;525&lt;/span&gt;&lt;span&gt;526&lt;/span&gt;&lt;span&gt;527&lt;/span&gt;&lt;span&gt;528&lt;/span&gt;&lt;span&gt;529&lt;/span&gt;&lt;span&gt;530&lt;/span&gt;&lt;span&gt;531&lt;/span&gt;&lt;span&gt;532&lt;/span&gt;&lt;span&gt;533&lt;/span&gt;&lt;span&gt;534&lt;/span&gt;&lt;span&gt;535&lt;/span&gt;&lt;span&gt;536&lt;/span&gt;&lt;span&gt;537&lt;/span&gt;&lt;span&gt;538&lt;/span&gt;&lt;span&gt;539&lt;/span&gt;&lt;span&gt;540&lt;/span&gt;&lt;span&gt;541&lt;/span&gt;&lt;span&gt;542&lt;/span&gt;&lt;span&gt;543&lt;/span&gt;&lt;span&gt;544&lt;/span&gt;&lt;span&gt;545&lt;/span&gt;&lt;span&gt;546&lt;/span&gt;&lt;span&gt;547&lt;/span&gt;&lt;span&gt;548&lt;/span&gt;&lt;span&gt;549&lt;/span&gt;&lt;span&gt;550&lt;/span&gt;&lt;span&gt;551&lt;/span&gt;&lt;span&gt;552&lt;/span&gt;&lt;span&gt;553&lt;/span&gt;&lt;span&gt;554&lt;/span&gt;&lt;span&gt;555&lt;/span&gt;&lt;span&gt;556&lt;/span&gt;&lt;span&gt;557&lt;/span&gt;&lt;span&gt;558&lt;/span&gt;&lt;span&gt;559&lt;/span&gt;&lt;span&gt;560&lt;/span&gt;&lt;span&gt;561&lt;/span&gt;&lt;span&gt;562&lt;/span&gt;&lt;span&gt;563&lt;/span&gt;&lt;span&gt;564&lt;/span&gt;&lt;span&gt;565&lt;/span&gt;&lt;span&gt;566&lt;/span&gt;&lt;span&gt;567&lt;/span&gt;&lt;span&gt;568&lt;/span&gt;&lt;span&gt;569&lt;/span&gt;&lt;span&gt;570&lt;/span&gt;&lt;span&gt;571&lt;/span&gt;&lt;span&gt;572&lt;/span&gt;&lt;span&gt;573&lt;/span&gt;&lt;span&gt;574&lt;/span&gt;&lt;span&gt;575&lt;/span&gt;&lt;span&gt;576&lt;/span&gt;&lt;span&gt;577&lt;/span&gt;&lt;span&gt;578&lt;/span&gt;&lt;span&gt;579&lt;/span&gt;&lt;span&gt;580&lt;/span&gt;&lt;span&gt;581&lt;/span&gt;&lt;span&gt;582&lt;/span&gt;&lt;span&gt;583&lt;/span&gt;&lt;span&gt;584&lt;/span&gt;&lt;span&gt;585&lt;/span&gt;&lt;span&gt;586&lt;/span&gt;&lt;span&gt;587&lt;/span&gt;&lt;span&gt;588&lt;/span&gt;&lt;span&gt;589&lt;/span&gt;&lt;span&gt;590&lt;/span&gt;&lt;span&gt;591&lt;/span&gt;&lt;span&gt;592&lt;/span&gt;&lt;span&gt;593&lt;/span&gt;&lt;span&gt;594&lt;/span&gt;&lt;span&gt;595&lt;/span&gt;&lt;span&gt;596&lt;/span&gt;&lt;span&gt;597&lt;/span&gt;&lt;span&gt;598&lt;/span&gt;&lt;span&gt;599&lt;/span&gt;&lt;span&gt;600&lt;/span&gt;&lt;span&gt;601&lt;/span&gt;&lt;span&gt;602&lt;/span&gt;&lt;span&gt;603&lt;/span&gt;&lt;span&gt;604&lt;/span&gt;&lt;span&gt;605&lt;/span&gt;&lt;span&gt;606&lt;/span&gt;&lt;span&gt;607&lt;/span&gt;&lt;span&gt;608&lt;/span&gt;&lt;span&gt;609&lt;/span&gt;&lt;span&gt;610&lt;/span&gt;&lt;span&gt;611&lt;/span&gt;&lt;span&gt;612&lt;/span&gt;&lt;span&gt;613&lt;/span&gt;&lt;span&gt;614&lt;/span&gt;&lt;span&gt;615&lt;/span&gt;&lt;span&gt;616&lt;/span&gt;&lt;span&gt;617&lt;/span&gt;&lt;span&gt;618&lt;/span&gt;&lt;span&gt;619&lt;/span&gt;&lt;span&gt;620&lt;/span&gt;&lt;span&gt;621&lt;/span&gt;&lt;span&gt;622&lt;/span&gt;&lt;span&gt;623&lt;/span&gt;&lt;span&gt;624&lt;/span&gt;&lt;span&gt;625&lt;/span&gt;&lt;span&gt;626&lt;/span&gt;&lt;span&gt;627&lt;/span&gt;&lt;span&gt;628&lt;/span&gt;&lt;span&gt;629&lt;/span&gt;&lt;span&gt;630&lt;/span&gt;&lt;span&gt;631&lt;/span&gt;&lt;span&gt;632&lt;/span&gt;&lt;span&gt;633&lt;/span&gt;&lt;span&gt;634&lt;/span&gt;&lt;span&gt;635&lt;/span&gt;&lt;span&gt;636&lt;/span&gt;&lt;span&gt;637&lt;/span&gt;&lt;span&gt;638&lt;/span&gt;&lt;span&gt;639&lt;/span&gt;&lt;span&gt;640&lt;/span&gt;&lt;span&gt;641&lt;/span&gt;&lt;span&gt;642&lt;/span&gt;&lt;span&gt;643&lt;/span&gt;&lt;span&gt;644&lt;/span&gt;&lt;span&gt;645&lt;/span&gt;&lt;span&gt;646&lt;/span&gt;&lt;span&gt;647&lt;/span&gt;&lt;span&gt;648&lt;/span&gt;&lt;span&gt;649&lt;/span&gt;&lt;span&gt;650&lt;/span&gt;&lt;span&gt;651&lt;/span&gt;&lt;span&gt;652&lt;/span&gt;&lt;span&gt;653&lt;/span&gt;&lt;span&gt;654&lt;/span&gt;&lt;span&gt;655&lt;/span&gt;&lt;span&gt;656&lt;/span&gt;&lt;span&gt;657&lt;/span&gt;&lt;span&gt;658&lt;/span&gt;&lt;span&gt;659&lt;/span&gt;&lt;span&gt;660&lt;/span&gt;&lt;span&gt;661&lt;/span&gt;&lt;span&gt;662&lt;/span&gt;&lt;span&gt;663&lt;/span&gt;&lt;span&gt;664&lt;/span&gt;&lt;span&gt;665&lt;/span&gt;&lt;span&gt;666&lt;/span&gt;&lt;span&gt;667&lt;/span&gt;&lt;span&gt;668&lt;/span&gt;&lt;span&gt;669&lt;/span&gt;&lt;span&gt;670&lt;/span&gt;&lt;span&gt;671&lt;/span&gt;&lt;span&gt;672&lt;/span&gt;&lt;span&gt;673&lt;/span&gt;&lt;span&gt;674&lt;/span&gt;&lt;span&gt;675&lt;/span&gt;&lt;span&gt;676&lt;/span&gt;&lt;span&gt;677&lt;/span&gt;&lt;span&gt;678&lt;/span&gt;&lt;span&gt;679&lt;/span&gt;&lt;span&gt;680&lt;/span&gt;&lt;span&gt;681&lt;/span&gt;&lt;span&gt;682&lt;/span&gt;&lt;span&gt;683&lt;/span&gt;&lt;span&gt;684&lt;/span&gt;&lt;span&gt;685&lt;/span&gt;&lt;span&gt;686&lt;/span&gt;&lt;span&gt;687&lt;/span&gt;&lt;span&gt;688&lt;/span&gt;&lt;span&gt;689&lt;/span&gt;&lt;span&gt;690&lt;/span&gt;&lt;span&gt;691&lt;/span&gt;&lt;span&gt;692&lt;/span&gt;&lt;span&gt;693&lt;/span&gt;&lt;span&gt;694&lt;/span&gt;&lt;span&gt;695&lt;/span&gt;&lt;span&gt;696&lt;/span&gt;&lt;span&gt;697&lt;/span&gt;&lt;span&gt;698&lt;/span&gt;&lt;span&gt;699&lt;/span&gt;&lt;span&gt;700&lt;/span&gt;&lt;span&gt;701&lt;/span&gt;&lt;span&gt;702&lt;/span&gt;&lt;span&gt;703&lt;/span&gt;&lt;span&gt;704&lt;/span&gt;&lt;span&gt;705&lt;/span&gt;&lt;span&gt;706&lt;/span&gt;&lt;span&gt;707&lt;/span&gt;&lt;span&gt;708&lt;/span&gt;&lt;span&gt;709&lt;/span&gt;&lt;span&gt;710&lt;/span&gt;&lt;span&gt;711&lt;/span&gt;&lt;span&gt;712&lt;/span&gt;&lt;span&gt;713&lt;/span&gt;&lt;span&gt;714&lt;/span&gt;&lt;span&gt;715&lt;/span&gt;&lt;span&gt;716&lt;/span&gt;&lt;span&gt;717&lt;/span&gt;&lt;span&gt;718&lt;/span&gt;&lt;span&gt;719&lt;/span&gt;&lt;span&gt;720&lt;/span&gt;&lt;span&gt;721&lt;/span&gt;&lt;span&gt;722&lt;/span&gt;&lt;span&gt;723&lt;/span&gt;&lt;span&gt;724&lt;/span&gt;&lt;span&gt;725&lt;/span&gt;&lt;span&gt;726&lt;/span&gt;&lt;span&gt;727&lt;/span&gt;&lt;span&gt;728&lt;/span&gt;&lt;span&gt;729&lt;/span&gt;&lt;span&gt;730&lt;/span&gt;&lt;span&gt;731&lt;/span&gt;&lt;span&gt;732&lt;/span&gt;&lt;span&gt;733&lt;/span&gt;&lt;span&gt;734&lt;/span&gt;&lt;span&gt;735&lt;/span&gt;&lt;span&gt;736&lt;/span&gt;&lt;span&gt;737&lt;/span&gt;&lt;span&gt;738&lt;/span&gt;&lt;span&gt;739&lt;/span&gt;&lt;span&gt;740&lt;/span&gt;&lt;span&gt;741&lt;/span&gt;&lt;span&gt;742&lt;/span&gt;&lt;span&gt;743&lt;/span&gt;&lt;span&gt;744&lt;/span&gt;&lt;span&gt;745&lt;/span&gt;&lt;span&gt;746&lt;/span&gt;&lt;span&gt;747&lt;/span&gt;&lt;span&gt;748&lt;/span&gt;&lt;span&gt;749&lt;/span&gt;&lt;span&gt;750&lt;/span&gt;&lt;span&gt;751&lt;/span&gt;&lt;span&gt;752&lt;/span&gt;&lt;span&gt;753&lt;/span&gt;&lt;span&gt;754&lt;/span&gt;&lt;span&gt;755&lt;/span&gt;&lt;span&gt;756&lt;/span&gt;&lt;span&gt;757&lt;/span&gt;&lt;span&gt;758&lt;/span&gt;&lt;span&gt;759&lt;/span&gt;&lt;span&gt;760&lt;/span&gt;&lt;span&gt;761&lt;/span&gt;&lt;span&gt;762&lt;/span&gt;&lt;span&gt;763&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;stdio.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;stdlib.h&gt;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// system()函数需要引用stdlib.h头文件&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;string.h&gt;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// 字符串函数需要引用string.h头文件&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;ctype.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;MAX_STUDENTS&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt; &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 最大学生人数&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//定义学生数据存储位置,比如我就放到D盘的&quot;数据库.txt&quot;文件里 &lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;define&lt;/span&gt; &lt;span class=&quot;token macro-name&quot;&gt;FILE_PATH&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;D:\\数据库.txt&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//TXT用UTF-8格式,编译器也设置为UTF-8打开,不然中文全是乱七八糟的字符 &lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;     &lt;span class=&quot;token comment&quot;&gt;// 姓名&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;long&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;               &lt;span class=&quot;token comment&quot;&gt;// 学号&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; score&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;// 成绩&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//原本的程序输出的时候输出语句都靠的太近了所以代码中加了很多printf(&quot;\n&quot;);语句&lt;/span&gt;
 
&lt;span class=&quot;token comment&quot;&gt;// 为了方便检测学生的学号重叠问题,新定义一个checkIdExists函数检查学号是否已存在&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;checkIdExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 学号已存在&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 学号不存在&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;//输入学生信息函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;inputStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;

	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; newCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请问要录入几个学生呢?\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;人数:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;newCount&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
	    
	&lt;span class=&quot;token comment&quot;&gt;// 计算总共会有多少学生&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; total &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; newCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    
	&lt;span class=&quot;token comment&quot;&gt;//判断输入人数是否合理 ,下面的插入学生函数也做了相同的判断 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;total &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; canAdd &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; MAX_STUDENTS &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;对不起哦，您最多只能再录入 %d 个人（总共不能超过 %d 人）\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; canAdd&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;// 询问用户是否要继续录入可添加的数量&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;是否录入 %d 个学生？(1. 是 / 0. 否): &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; canAdd&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;choice &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    newCount &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; canAdd&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    
	&lt;span class=&quot;token comment&quot;&gt;// 从当前学生数开始录入新学生&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; newCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第%d个学生\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;//这里因为地球上有一堆人同名同姓,所以允许学生名字相同但学号必须唯一&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        
	    &lt;span class=&quot;token comment&quot;&gt;//确保学号为10位及以下 &lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token comment&quot;&gt;//先判断学号是否10位及以下 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9999999999&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号无效（学号必须是最多10位的数字），请重新输入。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkIdExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        	&lt;span class=&quot;token comment&quot;&gt;//再调用checkIdExists判断学号是否重复 &lt;/span&gt;
	            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号 %lld 已存在，请重新输入哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        	&lt;span class=&quot;token comment&quot;&gt;//两种情况都不存在的话就跳出while循环&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        
	    &lt;span class=&quot;token comment&quot;&gt;//确保成绩0~750 &lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成绩:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token comment&quot;&gt;//逻辑和 确保学号为10位及以下 一模一样&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;750&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成绩无效（成绩必须在0到750之间），请重新输入哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    
	&lt;span class=&quot;token comment&quot;&gt;// 更新学生总数&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; newCount&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n成功录入 %d 名新学生！当前总共 %d 名学生。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; newCount&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//显示所有学生信息&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;printAllStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//如果没有一个学生 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前系统没有学生哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//for循环遍历 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 查找学生信息函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;searchStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	
	&lt;span class=&quot;token comment&quot;&gt;//如果没有一个学生 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前系统没有学生哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请选择查找方式：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. 按姓名查找\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2. 按学号查找\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入选项：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 按姓名查找&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入学生姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;//使用found来定义学生的存在状态 0不存在,1存在 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; found &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        	&lt;span class=&quot;token comment&quot;&gt;//用strcmp将学生姓名一一对比,如果找到就跳出循环 &lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n找到啦!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                found &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token comment&quot;&gt;//找不到就输出找不到 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;found&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没有找到该同学诶。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    
	    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 按学号查找&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入学生学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; found &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        
	        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        	&lt;span class=&quot;token comment&quot;&gt;//和刚才的姓名查找逻辑一模一样,只是把结构体成员由name改为id &lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n找到啦!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                found &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token comment&quot;&gt;//没找到就是没找到 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;found&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没有找到该同学诶。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;//如果不满足前两个case条件,就输出default &lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的选项，您只能输入1或者2哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;// 删除学生信息函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;deleteStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//如果没有一个学生 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前系统没有学生哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
  	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请选择删除方式：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. 按姓名删除\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2. 按学号删除\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入选项：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//这里之所以让index=-1而不是0是因为还有一种情况,就是删除前先要通过姓名和学号来查找学生&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//如果输入了一个不存在的名字或学号,就要给出&quot;找不到&quot;的提示 &lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//也就是说,前面的查找函数在这里又用了一下 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
		&lt;span class=&quot;token comment&quot;&gt;// 按姓名删除&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入学生姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	  		&lt;span class=&quot;token comment&quot;&gt;//删除的逻辑和 上面查找函数一模一样,就是找到这个同学,然后删了他,只是定义了一个index=-1的区别 &lt;/span&gt;
	  		&lt;span class=&quot;token comment&quot;&gt;//因为如果定义index为0或者正数,就会影响下面for循环的使用 ,所以随便定义一个负数比如-1就可以了 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            	&lt;span class=&quot;token comment&quot;&gt;//找到了就将index改为当前的学生数组的索引 &lt;/span&gt;
	                index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token comment&quot;&gt;//找不到就跳出 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    
	    
	    &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
		&lt;span class=&quot;token comment&quot;&gt;// 按学号删除&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入学生学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	  		&lt;span class=&quot;token comment&quot;&gt;//和姓名删除一模一样 &lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	                index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;//如果输入其他数字就提醒一下 &lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的选项，您只能输入1或者2哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//只要姓名和学号找不到,而代码在函数内从上往下执行 ,就一定会对index的值进行判断&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//然后提醒没有这个同学信息 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没有找到该同学诶。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	  
	&lt;span class=&quot;token comment&quot;&gt;// 确认删除&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; confirm&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;//为防止不小心删错了,所以用for循环搞一个确认三遍 &lt;/span&gt;
		&lt;span class=&quot;token comment&quot;&gt;// validInput用于检测输入是否有效,因为我发现输入0和1以外的数字会退出删除操作,所以强制规范一下 &lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
	    
		&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;validInput&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;确定要删除该学生信息吗？需要您确认三遍才行哦(1. 确定 / 0. 取消)：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;confirm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		        validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 如果输入有效，就是要么是0,要么是1,就退出循环&lt;/span&gt;
		    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的输入，您只能输入0或者1哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
		    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;删除操作已取消。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	  
	&lt;span class=&quot;token comment&quot;&gt;// 删除学生信息&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//这里删除之后调整一下学生索引的位置 &lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//就是继承原先数组学生的顺序,因为删了一个,新数组又少一个位子,所以被删的学生的索引位子会被下一个学生顶替 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//删除后将学生总数减一 &lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;该同学信息已删除!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 修改学生信息函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;modifyStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//如果没有一个学生 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前系统没有学生哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;选择修改方式：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. 按姓名修改\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2. 按学号修改\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入选项：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
   &lt;span class=&quot;token comment&quot;&gt;//修改的话和删除差不多(指的是前期都是通过按姓名或学号先找到学生,然后修改) &lt;/span&gt;
   
   &lt;span class=&quot;token comment&quot;&gt;//以下部分就是直接套用上面删除函数的逻辑 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 按姓名修改&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入要修改的学生的姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
   
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;strcmp&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 按学号修改&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入要修改的学生的学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
   
            &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                    index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                    &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的选项，您只能输入1或者2哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
   
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没有找到该同学诶。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
   
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n找到啦!这是该同学的信息!：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//找到后就是修改这个同学的信息 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; modifyChoice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n请问您要修改他/她的什么信息呢：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. 修改姓名\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2. 修改学号\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;3. 修改成绩\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入选项：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;modifyChoice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// 存储原始值，以便在取消修改时恢复&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; original &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
   	&lt;span class=&quot;token comment&quot;&gt;//因为不知道到底改什么信息,所以用switch case语句问一下 要改哪个 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;modifyChoice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 修改姓名&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新的姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 修改学号&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;//和case1逻辑一模一样 &lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新的学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        
        &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
			&lt;span class=&quot;token comment&quot;&gt;// 修改成绩&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;//和case1逻辑一模一样&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新的成绩：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;//就三个选项,要是输入了其他的只能default提醒一下输错了 &lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的选项，您只能输入1或者2或者3哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;//同样为防止不小心误改,改之后确认一下 &lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//这里的逻辑和删除函数里确认删不删逻辑一样&lt;/span&gt;
   	&lt;span class=&quot;token comment&quot;&gt;// 统一确认操作（只需一次确认）&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; confirm&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 用于检测输入是否有效&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;validInput&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;确定要修改学生信息吗？(1. 确定 / 0. 取消)：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;confirm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    	validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 如果输入有效，退出循环&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的输入，您只能输入0或者1哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    	&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	       
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;// 取消修改，恢复原始值&lt;/span&gt;
	    students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; original&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;修改操作已取消。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
   	
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学生信息已修改。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是他/她修改后的学生信息哦：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//这里打印一下学生信息看看有没有改错 &lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 插入学生信息函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;insertStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//和输入学生信息函数的逻辑一样,要保证学生的数量再合理范围内 &lt;/span&gt;
   	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学生信息已满(限定 %d 个)，无法插入新学生。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//提醒一下现在要插入第几个学生以及总共可以有多少个学生 &lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;总共可以插入 %d 个学生,当前已有 %d 个学生，您将插入第 %d 个学生的信息哦!\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	&lt;span class=&quot;token comment&quot;&gt;//以下内容逻辑和录入学生信息函数逻辑一模一样 ,就不重复解释了 &lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新学生的姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新学生的学号:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;9999999999&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号无效（学号必须是最多10位的数字），请重新输入。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;checkIdExists&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号 %lld 已存在,您看看是不是输错了?请重新输入哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;请输入新学生的成绩：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;750&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成绩无效（成绩必须在0到750之间），请重新输入哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	
	   
	&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n新学生信息已插入!这是他/她的信息哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld  成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;//下面如果用冒泡排序,选择排序或插入排序比较浪费时间,如果有几十个学生还好&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//要是成千上百个这种方法效率低下,所以我用快速排序 &lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 快速排序的辅助函数，用于交换两个学生的信息&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; temp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;b&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; temp&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 快速排序的辅助函数，用于分区&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;partition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; high&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//因为是按学生成绩score进行排名,所以用 students[].score&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;float&lt;/span&gt; pivot &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;high&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;low &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; high &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; j&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; pivot&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token comment&quot;&gt;//调用swap函数快速将学生交换 &lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;j&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;swap&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;high&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 快速排序函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;quickSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; high&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;low &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; high&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; pi &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;partition&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; high&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

        &lt;span class=&quot;token function&quot;&gt;quickSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; low&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pi &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;quickSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; pi &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; high&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 根据成绩排序并显示排名&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;rankStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	
	&lt;span class=&quot;token comment&quot;&gt;//如果当前系统没有学生的话 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前系统没有学生哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
   	&lt;span class=&quot;token comment&quot;&gt;//调用quickSort函数对学生成绩进行降序排序&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;quickSort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
   
    &lt;span class=&quot;token comment&quot;&gt;//打印排序后的学生信息&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是同学们的考试成绩排名哦：\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//遍历打印学生按成绩排名的信息 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot; 第%d名:  姓名：%s  学号：%lld   成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 统计学生总数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;countStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
  	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;当前一共有：%d个学生哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 清屏函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;clearScreen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 判断操作系统并执行相应的命令&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;ifdef&lt;/span&gt; &lt;span class=&quot;token expression&quot;&gt;_WIN32  &lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;// Windows 系统&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;cls&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;else&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// Linux / macOS 系统&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;system&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;clear&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;endif&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;//清空缓冲区函数 &lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;clearInputBuffer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// 清空缓冲区直到换行符或文件结束符&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; c&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;c &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; c &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;EOF&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 退出系统确认函数&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//因为我发现把这个功能写进主函数时程序比较卡,只能单独弄一个函数 ,然后再定义一个clearInputBuffer函数清除一下缓存 &lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;confirmExit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	
	&lt;span class=&quot;token comment&quot;&gt;//确认的方法和前面使用的差不多 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; confirm&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;validInput&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        	&lt;span class=&quot;token comment&quot;&gt;//这里用了两个三元运算符 &lt;/span&gt;
        	&lt;span class=&quot;token comment&quot;&gt;//三元运算符的执行顺序是从左到右的&lt;/span&gt;
			&lt;span class=&quot;token comment&quot;&gt;//先判断第一个条件，如果条件为真，则返回第一个结果；如果条件为假，则继续评估下一个条件&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;真的要退出系统吗亲 (1. 确定退出 / 0. 取消操作)：&quot;&lt;/span&gt;
                     &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;要不要再检查一下亲 (1. 确定退出 / 0. 取消操作)：&quot;&lt;/span&gt;
                     &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;确认信息无误就可以退出咯 (1. 确定退出 / 0. 取消操作)：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;confirm&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的输入，您只能输入0或者1哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;clearInputBuffer&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;confirm &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;取消操作。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 返回0表示取消退出&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 返回1表示确认退出&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 保存学生信息到文件&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//写入文件信息 &lt;/span&gt;
    FILE &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;file &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;FILE_PATH&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;w&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//出现异常时 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;file &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;perror&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无法打开文件&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//循环遍历输入信息到文件中 &lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
       &lt;span class=&quot;token function&quot;&gt;fprintf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;file&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;姓名：%s  学号：%lld   成绩：%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;//停止写入 &lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;fclose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学生信息已保存到文件 %s\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FILE_PATH&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;// 从文件加载学生信息&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;loadStudentsFromFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//读取文件信息 &lt;/span&gt;
	FILE &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;file &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;fopen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;FILE_PATH&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;r&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;//判断一下这玩意在不在 &lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;文件 %s 不存在，将创建新文件\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FILE_PATH&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	     
	&lt;span class=&quot;token comment&quot;&gt;// 初始化学生计数为0&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token comment&quot;&gt;// 创建缓冲区line用于存储文件中的一行内容&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; line&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;256&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	     
	     
	&lt;span class=&quot;token comment&quot;&gt;// 逐行读取文件内容，直到文件结束或达到最大学生数&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;fgets&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; MAX_STUDENTS&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;// 定位关键字段&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;// 在行中定位&quot;姓名：&quot;,&quot;学号：&quot;,&quot;成绩：&quot;这三个关键字段的位置&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;name_start &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;id_start &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;score_start &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strstr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;line&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;成绩：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	         
	    &lt;span class=&quot;token comment&quot;&gt;// 检查这一行是否所有关键字段都存在&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;name_start &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;id_start &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;score_start&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    	&lt;span class=&quot;token comment&quot;&gt;// 只要缺一个就跳过这个的学生信息 &lt;/span&gt;
			&lt;span class=&quot;token keyword&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
			
	         
	    &lt;span class=&quot;token comment&quot;&gt;// 提取姓名,姓名为字符串类型所以需要特殊处理 &lt;/span&gt;
	    name_start &lt;span class=&quot;token operator&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token comment&quot;&gt;// 计算姓名长度：从&quot;姓名：&quot;开始到&quot;学号：&quot;结束之间&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; name_len &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; id_start &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; name_start &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 减去两个空格&lt;/span&gt;
	    
	    &lt;span class=&quot;token comment&quot;&gt;// 检查姓名长度是否有效（大于0且小于结构体中姓名字段的最大长度）&lt;/span&gt;
	    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name_len &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;size_t&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;name_len &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    	 &lt;span class=&quot;token comment&quot;&gt;// 复制姓名到学生结构体&lt;/span&gt;
	    	&lt;span class=&quot;token function&quot;&gt;strncpy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name_start&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name_len&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    	&lt;span class=&quot;token comment&quot;&gt;// 确保姓名字符串正确终止&lt;/span&gt;
	        students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;name_len&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\0&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	         
	    &lt;span class=&quot;token comment&quot;&gt;// 提取学号和成绩&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;id_start &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;学号：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%lld&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;sscanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;score_start &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成绩：&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;%f&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	    
	    &lt;span class=&quot;token comment&quot;&gt;// 成功加载一个学生，计数器加1&lt;/span&gt;
	    &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
	     
	&lt;span class=&quot;token function&quot;&gt;fclose&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;file&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;已从文件 %s 加载 %d 条学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; FILE_PATH&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Student&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; count &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; choice&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; init &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; clearscreen &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// 加载已有的学生信息&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;loadStudentsFromFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;成功加载 %d 名学生\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
	&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
	    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;加载的学生:姓名:%s  学号:%lld  成绩:%.2f\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;id&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; students&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;score&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
	&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;// 调用清屏函数&lt;/span&gt;
		&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;init &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		    &lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;!&lt;/span&gt;validInput&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;输入 0 或 1 选择是否清屏:\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;1. 清屏\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0. 不清屏\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;输入值为:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		        
		        
				&lt;span class=&quot;token comment&quot;&gt;//为了防止输入出0和1以外的其他数字影响程序 &lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;//所以要判断输入的是0还是1(在开始写这个代码时就遇到这个问题了)&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;// 即在输入的数字scanf(&quot;%d&quot;, &amp;#x26;clearscreen) == 1 为整数合法的情况下&lt;/span&gt;
				&lt;span class=&quot;token comment&quot;&gt;//的同时满足 clearscreen为0或者1的条件 &lt;/span&gt;
		        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;clearscreen&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&amp;#x26;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clearscreen &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;||&lt;/span&gt; clearscreen &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		        	&lt;span class=&quot;token comment&quot;&gt;//满足条件后将validInput的值改为1 ,!validInput就为0,退出while循环 &lt;/span&gt;
		            validInput &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;clearscreen &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		                &lt;span class=&quot;token function&quot;&gt;clearScreen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 调用清屏函数&lt;/span&gt;
		            &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
		        	&lt;span class=&quot;token comment&quot;&gt;//如果输入的不是0或1 &lt;/span&gt;
		            &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的输入，您只能输入0或者1哦\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		            &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getchar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;token char&quot;&gt;&apos;\n&apos;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 清空输入缓冲区&lt;/span&gt;
		        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
		&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
        init &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
    	&lt;span class=&quot;token comment&quot;&gt;// 根据用户输入选择是否清屏&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  学生信息管理系统\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   1. 输入学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   2. 查找学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   3. 删除学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   4. 修改学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   5. 插入学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   6. 学生成绩排名\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   7. 统计学生总数\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   8. 显示所有信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;   0. 退出系统\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;  请选择操作：只能输入0-8中的一个\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n输入值为:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token function&quot;&gt;scanf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%d&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输入操作选项&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
        &lt;span class=&quot;token keyword&quot;&gt;switch&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;choice&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;输入学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;inputStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;查找学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;searchStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
              &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;删除学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;deleteStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;修改学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;modifyStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;插入学生信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;insertStudent&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x26;&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
           &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;根据成绩排名\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;rankStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;7&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;统计学生总数\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;countStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;显示所有信息\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printAllStudents&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;// 调用函数显示所有学生信息&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; 
			&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
			    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;confirmExit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; 
					&lt;span class=&quot;token comment&quot;&gt;// 调用确认函数&lt;/span&gt;
			        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			        &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;退出系统!!! 感谢您的使用 Ciallo～(∠.ω&amp;#x3C; )⌒★\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			        &lt;span class=&quot;token comment&quot;&gt;// 如果确认退出，则退出程序&lt;/span&gt;
			        &lt;span class=&quot;token function&quot;&gt;exit&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
			    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			    &lt;span class=&quot;token function&quot;&gt;saveStudentsToFile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;students&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; count&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			    &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
			&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
			
            &lt;span class=&quot;token keyword&quot;&gt;default&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;无效的选项，您只能输入0~8中的一个哦。\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
                &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content:encoded><category>电脑日常</category><category>C</category></item><item><title>用ResourceHacker给exe换图标</title><link>https://huyangpahuo.vercel.app/posts/yong-resourcehacker-gei-exe-huan-tu-biao/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/yong-resourcehacker-gei-exe-huan-tu-biao/</guid><description>Resource Hacker可用于替换软件的icon图标</description><pubDate>Mon, 05 Jan 2026 19:07:38 GMT</pubDate><content:encoded>&lt;h1 id=&quot;resource-hackertm-是一款适用于-32-位和-64-位-windows-应用程序的资源编辑器&quot;&gt;Resource HackerTM 是一款适用于 32 位和 64 位 Windows® 应用程序的资源编辑器&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#resource-hackertm-是一款适用于-32-位和-64-位-windows-应用程序的资源编辑器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;它既是&lt;strong&gt;资源编译器&lt;/strong&gt; （针对 .rc 文件），也是一个&lt;strong&gt;反编译器&lt;/strong&gt; ——支持查看和编辑可执行文件（.exe; .dll; .scr等）以及编译后的资源库（.res、.mui）&lt;/p&gt;
&lt;p&gt;下载5.2.8版本: &lt;a href=&quot;https://www.angusj.com/resourcehacker/reshacker_setup.exe&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;EXE 安装&lt;/font&gt; &lt;/a&gt;（4.1MB）&lt;a href=&quot;https://www.angusj.com/resourcehacker/resource_hacker.zip&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;ZIP 安装&lt;/font&gt; &lt;/a&gt;（3.3MB）&lt;/p&gt;
&lt;p&gt;Create an .ico file using &lt;a href=&quot;http://gimp.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;GIMP&lt;/a&gt;, you can use the &lt;code&gt;game.ico&lt;/code&gt; or &lt;code&gt;love.ico&lt;/code&gt; included in the 32bit redistributable of LÖVE as a template&lt;br&gt;
用 &lt;a href=&quot;http://gimp.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;GIMP&lt;/a&gt; 创建.ico 文件，你可以用 LÖVE32 位再分发包里附带的 &lt;code&gt;game.ico&lt;/code&gt; 或 &lt;code&gt;love.ico&lt;/code&gt; 作为模板&lt;/p&gt;
&lt;p&gt;Rename your &lt;code&gt;.exe&lt;/code&gt; file to &lt;code&gt;nonsense.exe&lt;/code&gt; (explanation below)&lt;br&gt;
将你的 &lt;code&gt;.exe&lt;/code&gt; 文件重命名为 &lt;code&gt;nonsense.exe&lt;/code&gt;（下面有说明）&lt;/p&gt;
&lt;p&gt;Drag the &lt;code&gt;.exe&lt;/code&gt; file into &lt;a href=&quot;http://www.angusj.com/resourcehacker/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Resource Hacker&lt;/a&gt;, unfold &lt;code&gt;Icon Group&lt;/code&gt; and right-click the only item in it. Select &quot;Replace icon ...&quot; and select the &lt;code&gt;.ico&lt;/code&gt; file you created&lt;br&gt;
把 &lt;code&gt;.exe&lt;/code&gt; 文件拖到 &lt;a href=&quot;http://www.angusj.com/resourcehacker/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Resource Hacker，&lt;/a&gt; 展开&lt;code&gt;图标组 &lt;/code&gt;，右键点击里面唯一的项目。选择“替换图标......”然后选择你创建的 &lt;code&gt;.ico&lt;/code&gt; 文件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/%E7%94%A8ResourceHacker%E7%BB%99exe%E6%8D%A2%E5%9B%BE%E6%A0%87/image-20260106183423234.webp&quot; alt=&quot;image-20260106183423234&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Press Save (floppy disk icon)&lt;br&gt;
点击保存（软盘图标）&lt;/p&gt;
&lt;p&gt;You might not see the change yet. Rename &lt;code&gt;nonsense.exe&lt;/code&gt; to &lt;code&gt;yourgamename.exe&lt;/code&gt; and it should become visible.&lt;br&gt;
你可能还没看到变化。把 &lt;code&gt;nonsense.exe&lt;/code&gt; 改名为 &lt;code&gt;yourgamename.exe&lt;/code&gt;，应该会显示出来&lt;/p&gt;</content:encoded><category>软件推荐</category><category>ResourceHacker</category></item><item><title>lua---基本语法和关键字</title><link>https://huyangpahuo.vercel.app/posts/lua-ji-ben-yu-fa-he-guan-jian-zi/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/lua-ji-ben-yu-fa-he-guan-jian-zi/</guid><description>本篇学习lua的基本语法和关键字</description><pubDate>Wed, 24 Dec 2025 23:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;首先在学习love2d之前我们先熟悉该引擎所依赖的语言lua这里我们就用lua54吧毕竟功能多&quot;&gt;首先在学习Love2d之前我们先熟悉该引擎所依赖的语言—–Lua(这里我们就用lua5.4吧,毕竟功能多)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#首先在学习love2d之前我们先熟悉该引擎所依赖的语言lua这里我们就用lua54吧毕竟功能多&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;注释&quot;&gt;注释&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#注释&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;lua语言注释的格式是,作用是写点能提醒自己自己写的是什么东西的话(不要相信你自己的记忆力,真的,头一天写睡一觉忘得一干二净很正常  (＞﹏＜)  ),而编译器或引擎会忽略这句话&lt;/p&gt;
&lt;p&gt;但是我们一般不会一点一点的敲符号的,在VScode里我们可以选中要注释的文本直接使用快捷键&lt;font color=&quot;Turquoise&quot;&gt;Ctrl + /&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;什么,你说怎么取消注释,其实再按一下&lt;font color=&quot;Turquoise&quot;&gt;Ctrl + /&lt;/font&gt; 就取消了&lt;/p&gt;
&lt;p&gt;同理多行注释是&lt;font color=&quot;Turquoise&quot;&gt; shift +alt +a&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;代码格式化是&lt;font color=&quot;Turquoise&quot;&gt; shift +alt +f&lt;/font&gt;   或 &lt;font color=&quot;Turquoise&quot;&gt;ctrl +K ,ctrl +F&lt;/font&gt;，区别是前者是格式化鼠标选择区域的代码,后者是 格式化整个文件的代码&lt;/p&gt;
&lt;p&gt;如果用不惯的话可以自定义&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218213220074.webp&quot; alt=&quot;image-20251218213220074&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;输入&lt;font color=&quot;Turquoise&quot;&gt;comment&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;comment
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218213348246.webp&quot; alt=&quot;image-20251218213348246&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图,行注释就是单行注释,块注释就是多行注释,这里多行注释我已经调成我喜欢的&lt;font color=&quot;Turquoise&quot;&gt;ctrl + shift + /&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Red&quot;&gt;右键&lt;/font&gt;中间的&lt;font color=&quot;Red&quot;&gt;键绑定&lt;/font&gt;部分点击“&lt;font color=&quot;Red&quot;&gt;更改键绑定&lt;/font&gt;”自己修改即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218220629962.webp&quot; alt=&quot;image-20251218220629962&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218213513573.webp&quot; alt=&quot;image-20251218213513573&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;代码格式化的我们可以这样调&lt;/p&gt;
&lt;p&gt;同理,输入&lt;font color=&quot;Turquoise&quot;&gt; format document&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt; format document
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218214502376.webp&quot; alt=&quot;image-20251218214502376&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	把里面的快捷键自己调成你喜欢的,我因为一大堆插件造成快捷键冲突所以我就不改了&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Turquoise&quot;&gt;单行注释&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--hello,我是牢大,我爱冰红茶&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;font color=&quot;Turquoise&quot;&gt;多行注释&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;格式:在单行注释后面加上[[    注释内容    ]]&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--[[
 man!
 what can I say
]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;有些小伙伴可能会这么干,这是达咩的哟,lua不允许嵌套注释&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218220350743.webp&quot; alt=&quot;image-20251218220350743&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;语言风格&quot;&gt;语言风格&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#语言风格&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;lua有点类似于JavaScript,像大多数语言比如C,Java,C#,C++都是强制每句代码后都有一个分号“&lt;font color=&quot;Red&quot;&gt; ;&lt;/font&gt; ”&lt;/p&gt;
&lt;p&gt;但是lua可要可不要,一般不要,比如下面两种写法都对(先保存再运行代码,不然结果还是之前的)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218212058977.webp&quot; alt=&quot;image-20251218212058977&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;变量&quot;&gt;变量&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#变量&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;变量命名规则和其他语言基本一致&lt;/p&gt;
&lt;p&gt;通常是小写字母加数字或者“_”符号,或者是那种驼峰命名法&lt;/p&gt;
&lt;p&gt;比如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;player
item
tree_01
enemy_orc
myInventory
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Lua 中的变量全是全局变量，哪怕是语句块或是函数里，除非用 local 显式声明为局部变量&lt;/p&gt;
&lt;p&gt;局部变量的作用域为从声明位置开始到所在语句块结束,这个等会儿会在脚本中演示&lt;/p&gt;
&lt;p&gt;在 Lua 中：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;不写 &lt;code&gt;local&lt;/code&gt; 的变量 = 全局变量&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;写了 &lt;code&gt;local&lt;/code&gt; 的变量 = 只在当前作用域可见&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;关键字&quot;&gt;关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个基本上相比其他语言关键字不是很多,先不讲以后慢慢说&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;and&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;break&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;do&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;else&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;elseif&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;end&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;false&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;for&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;function&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;if&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;in&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;local&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;nil&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;not&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;or&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;repeat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;return&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;then&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;ture&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;until&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;while&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;goto&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;数据类型&quot;&gt;数据类型&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#数据类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;lua有8种数据类型,如下:&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;数据类型&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;nil(空)&lt;/td&gt;&lt;td&gt;类似其他语言的null,也就是表示空值的意思,nil就是&lt;font color=&quot;Red&quot;&gt;假&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;boolean(布尔)&lt;/td&gt;&lt;td&gt;布尔值,只能表示,false和true,false为&lt;font color=&quot;Red&quot;&gt;假&lt;/font&gt;,true就是&lt;font color=&quot;Red&quot;&gt;真&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;number(数字)&lt;/td&gt;&lt;td&gt;这个可以表示整型和浮点型,浮点的话默认双精度double,只是lua统一为&lt;font color=&quot;Red&quot;&gt;number&lt;/font&gt;类型&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;string(字符串)&lt;/td&gt;&lt;td&gt;字符串类型,可以用双引号&lt;font color=&quot;Red&quot;&gt;“ ”&lt;/font&gt; 单引号&lt;font color=&quot;Red&quot;&gt; ‘ ’ &lt;/font&gt; 双长括号&lt;font color=&quot;Red&quot;&gt; [[  ]]&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;function(函数)&lt;/td&gt;&lt;td&gt;函数(或方法),几乎每个语言都会有的东西,用来实现特定的功能&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;userdata(自定义类型)&lt;/td&gt;&lt;td&gt;一种用户自定义数据，用于表示一种由应用程序或 C/C++ 语言库所创建的类型，可以将任意 C/C++ 的任意数据类型的数据（通常是 struct 和 指针）存储到 Lua 变量中调用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;thread(线程)&lt;/td&gt;&lt;td&gt;类似于unity中的协程方法,不过unity是单线程的                                                                                                               在 Lua 里,最主要的线程是协同程序（coroutine),即协程。它跟线程（thread）差不多，拥有自己独立的栈、局部变量和指令指针，可以跟其他协同程序共享全局变量和其他大部分东西。                                                                                           线程跟协程的区别：线程可以同时多个运行，而协程任意时刻只能运行一个，并且处于运行状态的协程只有被挂起（suspend）时才会暂停。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;table(表)&lt;/td&gt;&lt;td&gt;类似于其他语言的数组array,数组的索引可以是数字,字符串,甚至是table本身,这个特点和其他语言一致&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h3 id=&quot;nil空&quot;&gt;nil(空)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#nil空&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;nil 类型表示一种没有任何有效值，例如打印一个没有赋值的变量，便会输出一个 nil 值：&lt;/p&gt;
&lt;p&gt;比如我们用&lt;font color=&quot;Red&quot;&gt;type&lt;/font&gt;输出此时没有赋值的a,那么结果就是  nil&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218215324165.webp&quot; alt=&quot;image-20251218215324165&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Red&quot;&gt;type&lt;/font&gt;类似JavaScript和TypeScript里的typeof,可以输出变量的数据类型&lt;/p&gt;
&lt;p&gt;比如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello world&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;      &lt;span class=&quot;token comment&quot;&gt;-- string&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;10.4&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;             &lt;span class=&quot;token comment&quot;&gt;-- number&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;print&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;              &lt;span class=&quot;token comment&quot;&gt;-- function&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;type&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;               &lt;span class=&quot;token comment&quot;&gt;-- function&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;               &lt;span class=&quot;token comment&quot;&gt;-- boolean&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;                &lt;span class=&quot;token comment&quot;&gt;-- nil&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;X&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;            &lt;span class=&quot;token comment&quot;&gt;-- string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218215715884.webp&quot; alt=&quot;image-20251218215715884&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;同样的nil可以用来删除数据,这个先不提,等会讲到table表的时候再讲一下&lt;/p&gt;
&lt;h3 id=&quot;boolean布尔&quot;&gt;boolean（布尔）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#boolean布尔&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;boolean 类型只有两个可选值：true（真） 和 false（假）&lt;/p&gt;
&lt;p&gt;Lua 把 false 和 nil 看作是 false，其他的（包括数字 0)都为 true&lt;/p&gt;
&lt;p&gt;这里涉及了if else语句,先不要管,先写了再说,这个其实表示判断,if  和 then之间的内容代表条件,满足条件执行上一条,不满足就是下一条&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;至少有一个是true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;false和nil都为false&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0在Lua中被视为true&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;0在Lua中被视为false&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218221300456.webp&quot; alt=&quot;image-20251218221300456&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	哦,可能学过其他语言的会困惑第二个输出结果: 0为啥是真,好吧,也算是lua的特性&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218221855925.webp&quot; alt=&quot;image-20251218221855925&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里再扯一下其他语言中的情况(了解即可)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218222007218.webp&quot; alt=&quot;image-20251218222007218&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218222038262.webp&quot; alt=&quot;image-20251218222038262&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218222128775.webp&quot; alt=&quot;image-20251218222128775&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218222218181.webp&quot; alt=&quot;image-20251218222218181&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218222407529.webp&quot; alt=&quot;image-20251218222407529&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看出这些语言除了Java 和C#是强类型语言外,其他的大多数把0当做false&lt;/p&gt;
&lt;h3 id=&quot;number数字&quot;&gt;number(数字)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#number数字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2.2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2e+1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;0.2e-1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;7.8263692594256e-06&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218223512982.webp&quot; alt=&quot;image-20251218223512982&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到,无论是科学计数法还是整数小数都是表示number类型的&lt;/p&gt;
&lt;p&gt;这和C#,C,C++等等语言不一样,比如C# 整型是int  单精度浮点float  双精度浮点double&lt;/p&gt;
&lt;h3 id=&quot;string字符串&quot;&gt;string(字符串)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#string字符串&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;对了,lua的字符串拼接方式就是用两个点  ‘ &lt;font color=&quot;Turquoise&quot;&gt;..&lt;/font&gt; ’,除了C和C++以外其他的语言大多数都可以用“ + ”号来拼接字符串的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;string1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;基&quot;&lt;/span&gt;	&lt;span class=&quot;token comment&quot;&gt;--写法一&lt;/span&gt;
string2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&apos;泥&apos;&lt;/span&gt;	&lt;span class=&quot;token comment&quot;&gt;--写法二&lt;/span&gt;
string3 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;[[苔煤]]&lt;/span&gt;	&lt;span class=&quot;token comment&quot;&gt;--写法三&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string1 &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; string2 &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; string3&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218225433463.webp&quot; alt=&quot;image-20251218225433463&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;哦,我们需要加一个&lt;font color=&quot;Red&quot;&gt;local&lt;/font&gt;关键字将其设置为局部变量&lt;/p&gt;
&lt;p&gt;这玩意作用就是:&lt;strong&gt;声明一个仅当前范围可见的变量，避免污染外层&lt;/strong&gt;,大白话就是用local把变量设为局部私有&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251218233459562.webp&quot; alt=&quot;image-20251218233459562&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对了,打印的方式我们也扯一下&lt;/p&gt;
&lt;p&gt;第一种:打印一句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;带不带派老铁&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第二种:打印好几句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;太带派了&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;雨姐&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;大东北&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;是我的家乡&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第三种:换行打印&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;小明剑魔曰:\n你的评分是\n3.0&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第四种:自动字符串化(这个和python很像鹅)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; diamond &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;玩家Steve开矿透挖到了:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; diamond&lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;组钻石&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第五种:格式化打印,使用  string.format() 方法&lt;/p&gt;
&lt;p&gt;这个需要了解一下这些符号,学过C  或者 C++的小伙伴绝对老熟悉了&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;%s&lt;/code&gt;: 字符串&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%d&lt;/code&gt; 或 &lt;code&gt;%i&lt;/code&gt;: 有符号整数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%f&lt;/code&gt;: 浮点数 (默认精度为 6 位小数)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%c&lt;/code&gt;: ASCII 字符&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%x&lt;/code&gt; / &lt;code&gt;%X&lt;/code&gt;: 十六进制数 (小写/大写)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;%%&lt;/code&gt;: 输出一个字面量百分号&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; age &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;欧润吉&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;角色名称: %s, 年龄: %s&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; age&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;第六种:更自由的格式化打印(其实是自己设定的规则啦,即正则表达式)———先不了解,目前也用不上,看看就行啦&lt;/p&gt;
&lt;p&gt;这个有几种我喜欢用的,因为lua自带的格式化方法具有很多局限性&lt;/p&gt;
&lt;p&gt;第一种如下(功能最少,但勉强能用)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- 定义一个自定义格式化函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tbl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- 使用 gsub 替换 %{key} 为对应的值&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%%{(%w+)}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 使用自定义格式化函数&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;刺客伍六七&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    gender &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;男&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    weapon &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;魔刀千刃&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; formatted &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;姓名: %{name}, 性别: %{gender}, 专武: %{weapon}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;formatted&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221233542362.webp&quot; alt=&quot;image-20251221233542362&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第二种如下(支持的功能增加一点,但是还是功能局限性)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; tbl&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; default&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fmt&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%%{([%w%-_]+)}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; default&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    user_name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;梅花十三&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    user_age  &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    user_city &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;玄武国&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; formatted &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;formatString&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Name: %{user_name}, Age: %{user_age}, City: %{user_city}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;formatted&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221234845870.webp&quot; alt=&quot;image-20251221234845870&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;第三种(专业级别的模版)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;span&gt;45&lt;/span&gt;&lt;span&gt;46&lt;/span&gt;&lt;span&gt;47&lt;/span&gt;&lt;span&gt;48&lt;/span&gt;&lt;span&gt;49&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;51&lt;/span&gt;&lt;span&gt;52&lt;/span&gt;&lt;span&gt;53&lt;/span&gt;&lt;span&gt;54&lt;/span&gt;&lt;span&gt;55&lt;/span&gt;&lt;span&gt;56&lt;/span&gt;&lt;span&gt;57&lt;/span&gt;&lt;span&gt;58&lt;/span&gt;&lt;span&gt;59&lt;/span&gt;&lt;span&gt;60&lt;/span&gt;&lt;span&gt;61&lt;/span&gt;&lt;span&gt;62&lt;/span&gt;&lt;span&gt;63&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;span&gt;65&lt;/span&gt;&lt;span&gt;66&lt;/span&gt;&lt;span&gt;67&lt;/span&gt;&lt;span&gt;68&lt;/span&gt;&lt;span&gt;69&lt;/span&gt;&lt;span&gt;70&lt;/span&gt;&lt;span&gt;71&lt;/span&gt;&lt;span&gt;72&lt;/span&gt;&lt;span&gt;73&lt;/span&gt;&lt;span&gt;74&lt;/span&gt;&lt;span&gt;75&lt;/span&gt;&lt;span&gt;76&lt;/span&gt;&lt;span&gt;77&lt;/span&gt;&lt;span&gt;78&lt;/span&gt;&lt;span&gt;79&lt;/span&gt;&lt;span&gt;80&lt;/span&gt;&lt;span&gt;81&lt;/span&gt;&lt;span&gt;82&lt;/span&gt;&lt;span&gt;83&lt;/span&gt;&lt;span&gt;84&lt;/span&gt;&lt;span&gt;85&lt;/span&gt;&lt;span&gt;86&lt;/span&gt;&lt;span&gt;87&lt;/span&gt;&lt;span&gt;88&lt;/span&gt;&lt;span&gt;89&lt;/span&gt;&lt;span&gt;90&lt;/span&gt;&lt;span&gt;91&lt;/span&gt;&lt;span&gt;92&lt;/span&gt;&lt;span&gt;93&lt;/span&gt;&lt;span&gt;94&lt;/span&gt;&lt;span&gt;95&lt;/span&gt;&lt;span&gt;96&lt;/span&gt;&lt;span&gt;97&lt;/span&gt;&lt;span&gt;98&lt;/span&gt;&lt;span&gt;99&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;span&gt;101&lt;/span&gt;&lt;span&gt;102&lt;/span&gt;&lt;span&gt;103&lt;/span&gt;&lt;span&gt;104&lt;/span&gt;&lt;span&gt;105&lt;/span&gt;&lt;span&gt;106&lt;/span&gt;&lt;span&gt;107&lt;/span&gt;&lt;span&gt;108&lt;/span&gt;&lt;span&gt;109&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;111&lt;/span&gt;&lt;span&gt;112&lt;/span&gt;&lt;span&gt;113&lt;/span&gt;&lt;span&gt;114&lt;/span&gt;&lt;span&gt;115&lt;/span&gt;&lt;span&gt;116&lt;/span&gt;&lt;span&gt;117&lt;/span&gt;&lt;span&gt;118&lt;/span&gt;&lt;span&gt;119&lt;/span&gt;&lt;span&gt;120&lt;/span&gt;&lt;span&gt;121&lt;/span&gt;&lt;span&gt;122&lt;/span&gt;&lt;span&gt;123&lt;/span&gt;&lt;span&gt;124&lt;/span&gt;&lt;span&gt;125&lt;/span&gt;&lt;span&gt;126&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;span&gt;128&lt;/span&gt;&lt;span&gt;129&lt;/span&gt;&lt;span&gt;130&lt;/span&gt;&lt;span&gt;131&lt;/span&gt;&lt;span&gt;132&lt;/span&gt;&lt;span&gt;133&lt;/span&gt;&lt;span&gt;134&lt;/span&gt;&lt;span&gt;135&lt;/span&gt;&lt;span&gt;136&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 底层逻辑,负责字典格式化输出&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; Template &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getByPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;root&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; current &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; root
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; key &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gmatch&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[^%.]+&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;current&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;table&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; index &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tonumber&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        current &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; index &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; current&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; current&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; current
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; Template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    context &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; context &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    options &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; default &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; options&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;default &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;%%{([^}]+)}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; value &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;getByPath&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;context&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; path&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; value &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;default&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;function&quot;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; ok&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; result &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pcall&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; context&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; ok &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;result&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;default&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

        &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tostring&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 玩家数据&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    weapons &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        weapon_01 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;魔刀千刃&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            damage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;15000&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        weapon_02 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;激光炮&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            damage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;8000&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

    character &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        player_01 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;伍六七&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            camp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;玄武国&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            base_power &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            weapon &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;weapon_01&quot;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        player_02 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
            name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;斯特国王子&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            camp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;斯特国&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            base_power &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
            weapon &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;weapon_02&quot;&lt;/span&gt;
        &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 角色信息注入&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;injectActor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;actor&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; ctx&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token comment&quot;&gt;--角色名字&lt;/span&gt;
        name &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;--角色阵营&lt;/span&gt;
        camp &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;camp &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;--角色专武&lt;/span&gt;
        weapon &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapon &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; w &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ctx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapons&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapon&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; w &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;--角色武力&lt;/span&gt;
        power &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; weapon_damage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapon &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; w &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; ctx&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapons&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;weapon&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
                weapon_damage &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; w &lt;span class=&quot;token keyword&quot;&gt;and&lt;/span&gt; w&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;damage &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;actor&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;base_power &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;weapon_damage &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;未知&quot;&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 我方和敌方&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; context_ally &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    actor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;injectActor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;character&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;player_01&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; context_enemy &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    actor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;injectActor&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;character&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;player_02&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; data&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 信息打印&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--------------------------------------------------&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 决战双方揭晓&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;token string&quot;&gt;&quot;决战双方：%{character.player_01.name} VS %{character.player_02.name}\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    data
&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--双方信息展示&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; tpl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;角色：%{actor.name}\n阵营：%{actor.camp}\n武力：%{actor.power}\n专武：%{actor.weapon}\n\n&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tpl&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; context_ally&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;Template&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tpl&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; context_enemy&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251222203855065.webp&quot; alt=&quot;image-20251222203855065&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;咳咳咳,扯太远了&lt;/p&gt;
&lt;p&gt;对了,如你所见,刚才这个”     string1 = &quot;基&quot;   ”字符串我只取名为变量名string1,没有显示声明这是字符串string类型,而是用local关键字&lt;/p&gt;
&lt;p&gt;补充一下(变量的作用域):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;写在函数/方法/语句块体外&lt;/strong&gt; → &lt;font color=&quot;Red&quot;&gt;全局（整个文件、整个程序可见）变量&lt;/font&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;写在函数/方法/语句块体内&lt;/strong&gt; → &lt;font color=&quot;Red&quot;&gt;局部（只在那个函数/块内部可见）变量&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;最好的例子就是Java和C#里的public和private关键字&lt;/p&gt;
&lt;p&gt;这里我们就用  Unity 游戏引擎里的C#讲解一下吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;//unity脚本
using UnityEngine;

public class PlayerLogic : MonoBehaviour
{
   public int hp = 100;        // 外部可访问,公开变量
   private int speed = 5;      // 仅类内部使用,外部不可调用,private可以省略不写,私有变量

   void Start()
    {
        Debug.Log(hp);
        Debug.Log(speed);
    }

	//随便写一个方法
    public void Move()
    {
        Debug.Log(&quot;Move with speed &quot; + speed);
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如你所见,public 可以让整个项目的所有脚本都可以获取这个变量,private只能让当前脚本使用这个变量&lt;/p&gt;
&lt;p&gt;我们的lua也是这样的,如果不给变量或者方法加local关键字,则默认就是全局公开的,这一点和unity的C#是相反的,C#不加关键字就是默认是局部私有的&lt;/p&gt;
&lt;p&gt;对了,.在C,java,C#,C++里都会给变量指定一个数据类型例如整型int  字符串string  浮点型float或double等等&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;java&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; banana &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//仅局部变量可用var&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; apple&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
var banana &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//仅局部变量可用var&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c++&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;auto&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;//全局局部都可以用auto&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于某些则是可以指定也可以不指定,比如python和TypeScript还有godot的GDscript&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;python&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;apple&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;#python可以直接写变量名,没有var或let这种关键字&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86M13,11.25H8V12.75H9.5V20H11.25V12.75H13V11.25Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;typescript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-typescript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; apple&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;number&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;#GDscript
var apple: int = 2  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对于lua这种不需要写数据类型的,称之为“&lt;font color=&quot;Turquoise&quot;&gt;变量本身无类型，值自带类型&lt;/font&gt;”,其中和JavaScript最像,JS也是用let(曾经是var)来充当所有类型的,同样的不可以也没有途径来指定变量类型,全靠编辑器或游戏引擎自己  “猜”  这是什么类型&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;javascript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; apple &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;//旧版是var apple =2;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;对了,由于数据类型之间存在隐式转换,这个在大多数语言之中都存在,就是我们常说的强制转换和隐式转换&lt;/p&gt;
&lt;p&gt;这里我们就先举例字符串和数字类型的相加吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--可以看出Lua会自动将字符串转换为数字,这称为隐式转换&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--然后进行加法运算&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220185808133.webp&quot; alt=&quot;image-20251220185808133&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;同理,也可以字符串和字符串相加,不过在java和C#中字符串相加结果还是字符串&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;java&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token class-name&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;1235&quot;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;12355&quot;&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;10123&quot;（先算 5+5）&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;123&quot;&lt;/span&gt;
Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;12355&quot;&lt;/span&gt;
Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;123&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 输出 &quot;10123&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是我们的Lua不是这样的,它只会先将字符串转换为数字,然后在进行数学运算,所以就有了如下结果&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;2&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--输出 &quot;8&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;-2e2&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;6&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--输出 &quot;-1200.0&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是我们都知道字符串不只有数字可以构成,还可以由各个国家的文字构成比如中文  英文  日文&lt;/p&gt;
&lt;p&gt;所以lua自然无法将文字转换为数字(不过你可能听说过ASCII码表和Unicode字符表,每个文字或符号都有对应的数字编号),但字符串相加减在Lua中不允许的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220191224658.webp&quot; alt=&quot;image-20251220191224658&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到,报错了&lt;/p&gt;
&lt;p&gt;同样的,假如你学过C  java  JavaScript什么的,都知道字符串长度这个概念,即字符串字节长度，学过的小伙伴可以再看一下&lt;/p&gt;
&lt;p&gt;其中字节我们需要了解一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220203217551.webp&quot; alt=&quot;image-20251220203217551&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有码点和单元的概念&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220203803350.webp&quot; alt=&quot;image-20251220203803350&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.45,15.97L15.87,18.41C15.61,18.55 15.19,18.68 14.63,18.8C14.06,18.93 13.39,19 12.62,19C10.41,18.96 8.75,18.3 7.64,17.04C6.5,15.77 5.96,14.16 5.96,12.21C6,9.9 6.68,8.13 8,6.89C9.28,5.64 10.92,5 12.9,5C13.65,5 14.3,5.07 14.84,5.19C15.38,5.31 15.78,5.44 16.04,5.59L15.44,8.08L14.4,7.74C14,7.64 13.53,7.59 13,7.59C11.85,7.58 10.89,7.95 10.14,8.69C9.38,9.42 9,10.54 8.96,12.03C8.97,13.39 9.33,14.45 10.04,15.23C10.75,16 11.74,16.4 13.03,16.41L14.36,16.29C14.79,16.21 15.15,16.1 15.45,15.97Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;C&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;stdio.h&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;string.h&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// 情形 1：假设执行字符集是 GBK，源文件也用 GBK 保存&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 每个汉字占 2 字节，11 个汉字 -&gt; 22 字节，加结尾 &apos;\0&apos; -&gt; 23&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; str_gbk&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[GBK] 字符串长度为 = %zu\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str_gbk&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 23&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[GBK] 字符串长度为 = %zu\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;str_gbk&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 22&lt;/span&gt;

    &lt;span class=&quot;token comment&quot;&gt;// 情形 2：强制 UTF-8 字面量（u8 前缀），与源文件是否 UTF-8 无关&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 每个汉字 3 字节，11 个汉字 -&gt; 33 字节，加结尾 &apos;\0&apos; -&gt; 34&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt;s_utf8 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u8&lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[UTF-8] 字符串长度为 = %zu\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;strlen&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s_utf8&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                  &lt;span class=&quot;token comment&quot;&gt;// 33&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;printf&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[UTF-8] 字符串长度为 = %zu\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;sizeof&lt;/span&gt; u8&lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 34 (含 &apos;\0&apos;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M10.5,15.97L10.91,18.41C10.65,18.55 10.23,18.68 9.67,18.8C9.1,18.93 8.43,19 7.66,19C5.45,18.96 3.79,18.3 2.68,17.04C1.56,15.77 1,14.16 1,12.21C1.05,9.9 1.72,8.13 3,6.89C4.32,5.64 5.96,5 7.94,5C8.69,5 9.34,5.07 9.88,5.19C10.42,5.31 10.82,5.44 11.08,5.59L10.5,8.08L9.44,7.74C9.04,7.64 8.58,7.59 8.05,7.59C6.89,7.58 5.93,7.95 5.18,8.69C4.42,9.42 4.03,10.54 4,12.03C4,13.39 4.37,14.45 5.08,15.23C5.79,16 6.79,16.4 8.07,16.41L9.4,16.29C9.83,16.21 10.19,16.1 10.5,15.97M11,11H13V9H15V11H17V13H15V15H13V13H11V11M18,11H20V9H22V11H24V13H22V15H20V13H18V11Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c++&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;string&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token macro property&quot;&gt;&lt;span class=&quot;token directive-hash&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token directive keyword&quot;&gt;include&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&amp;#x3C;iostream&gt;&lt;/span&gt;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 情形 1：假设执行字符集是 GBK，源文件也用 GBK 保存&lt;/span&gt;
    std&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;string s_gbk &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    std&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;cout &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[GBK] 字符串长度为&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt; s_gbk&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; \n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;//22字节&lt;/span&gt;
    
    &lt;span class=&quot;token comment&quot;&gt;// 情形 2：强制 UTF-8 字面量（u8 前缀），与源文件是否 UTF-8 无关&lt;/span&gt;
    std&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;string s_utf8 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; u8&lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    std&lt;span class=&quot;token operator&quot;&gt;::&lt;/span&gt;cout &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;[UTF-8] 字符串长度为&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt; s_utf8&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 33字节&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M16.5,6.08C16.5,6.08 9.66,7.79 12.94,11.56C13.91,12.67 12.69,13.67 12.69,13.67C12.69,13.67 15.14,12.42 14,10.82C12.94,9.35 12.14,8.62 16.5,6.08M12.03,7.28C16.08,4.08 14,2 14,2C14.84,5.3 11.04,6.3 9.67,8.36C8.73,9.76 10.13,11.27 12,13C11.29,11.3 8.78,9.84 12.03,7.28M9.37,17.47C6.29,18.33 11.25,20.1 15.16,18.43C14.78,18.28 14.41,18.1 14.06,17.89C12.7,18.2 11.3,18.26 9.92,18.07C8.61,17.91 9.37,17.47 9.37,17.47M14.69,15.79C12.94,16.17 11.13,16.26 9.35,16.05C8.04,15.92 8.9,15.28 8.9,15.28C5.5,16.41 10.78,17.68 15.5,16.3C15.21,16.19 14.93,16 14.69,15.79M18.11,19.09C18.11,19.09 18.68,19.56 17.5,19.92C15.22,20.6 8.07,20.81 6.09,19.95C5.38,19.64 6.72,19.21 7.14,19.12C7.37,19.06 7.6,19.04 7.83,19.04C7.04,18.5 2.7,20.14 5.64,20.6C13.61,21.9 20.18,20 18.11,19.09M15.37,14.23C15.66,14.04 15.97,13.88 16.29,13.74C16.29,13.74 14.78,14 13.27,14.14C11.67,14.3 10.06,14.32 8.46,14.2C6.11,13.89 9.75,13 9.75,13C8.65,13 7.57,13.26 6.59,13.75C4.54,14.75 11.69,15.2 15.37,14.23M16.27,16.65C16.25,16.69 16.23,16.72 16.19,16.75C21.2,15.44 19.36,12.11 16.96,12.94C16.83,13 16.72,13.08 16.65,13.19C16.79,13.14 16.93,13.1 17.08,13.07C18.28,12.83 20,14.7 16.27,16.65M16.4,21.26C13.39,21.78 10.31,21.82 7.28,21.4C7.28,21.4 7.74,21.78 10.09,21.93C13.69,22.16 19.22,21.8 19.35,20.1C19.38,20.11 19.12,20.75 16.4,21.26Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;java&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-java&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//java伪代码&lt;/span&gt;
&lt;span class=&quot;token class-name&quot;&gt;String&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; units &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;length&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;                          
&lt;span class=&quot;token class-name&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;out&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;字符串的长度为: &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; units&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 11（UTF-16 代码单元）,每个汉字一个单元,Java源码默认 UTF-8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;//C#伪代码&lt;/span&gt;
string s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; units &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; 
Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;$&lt;span class=&quot;token string&quot;&gt;&quot;字符串长度为= {units}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// 11（UTF-16 代码单元）,每个汉字一个单元,C#源码默认 UTF-8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;javascript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;const&lt;/span&gt; len &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; s&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token template-string&quot;&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;字符串长度为 = &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;${&lt;/span&gt;len&lt;span class=&quot;token interpolation-punctuation punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token template-punctuation string&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   &lt;span class=&quot;token comment&quot;&gt;// 11（UTF-16 代码单元）,每个汉字一个单元,JS源码默认 UTF-8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19.14,7.5A2.86,2.86 0 0,1 22,10.36V14.14A2.86,2.86 0 0,1 19.14,17H12C12,17.39 12.32,17.96 12.71,17.96H17V19.64A2.86,2.86 0 0,1 14.14,22.5H9.86A2.86,2.86 0 0,1 7,19.64V15.89C7,14.31 8.28,13.04 9.86,13.04H15.11C16.69,13.04 17.96,11.76 17.96,10.18V7.5H19.14M14.86,19.29C14.46,19.29 14.14,19.59 14.14,20.18C14.14,20.77 14.46,20.89 14.86,20.89A0.71,0.71 0 0,0 15.57,20.18C15.57,19.59 15.25,19.29 14.86,19.29M4.86,17.5C3.28,17.5 2,16.22 2,14.64V10.86C2,9.28 3.28,8 4.86,8H12C12,7.61 11.68,7.04 11.29,7.04H7V5.36C7,3.78 8.28,2.5 9.86,2.5H14.14C15.72,2.5 17,3.78 17,5.36V9.11C17,10.69 15.72,11.96 14.14,11.96H8.89C7.31,11.96 6.04,13.24 6.04,14.82V17.5H4.86M9.14,5.71C9.54,5.71 9.86,5.41 9.86,4.82C9.86,4.23 9.54,4.11 9.14,4.11C8.75,4.11 8.43,4.23 8.43,4.82C8.43,5.41 8.75,5.71 9.14,5.71Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;python&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-python&quot;&gt;s &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;
ln &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token builtin&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;s&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string-interpolation&quot;&gt;&lt;span class=&quot;token string&quot;&gt;f&quot;字符串长度为 = &lt;/span&gt;&lt;span class=&quot;token interpolation&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;ln&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;# 11 (Unicode 码点),每个汉字是一个码点,python源码默认 UTF-8，len函数返回码点数&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;ok ,现在再来看看我们的lua&lt;/p&gt;
&lt;p&gt;lua使用 &lt;font color=&quot;Red&quot;&gt;#&lt;/font&gt; 来计算字符串的长度，放在字符串前面,或者使用   &lt;font color=&quot;Red&quot;&gt;string.len()&lt;/font&gt;  来获取字符串的长度&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; le &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--注意,Lua 本身把字符串当作原始字节序列，不做任何编码/解码,所以字节取决于你当前文件的保存格式是UTF-8还是GBK&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;字符串长度&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;le&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;--33字节 (UTF-8字节)  22(GBK字节)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;字符串长度&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;le&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;--33字节 (UTF-8字节)  22(GBK字节)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;码点数&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; utf8&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;len&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;le&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 11(Unicode 码点)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220211553480.webp&quot; alt=&quot;image-20251220211553480&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220214021468.webp&quot; alt=&quot;image-20251220214021468&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;或者这样写,都是可以的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; len &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜喂你吃了一口蛋糕&quot;&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;字符串长度&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; len&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token comment&quot;&gt;--33字节&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251220211507010.webp&quot; alt=&quot;image-20251220211507010&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;table表&quot;&gt;table(表)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#table表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个和其他语言的数组非常类似,同样的也和JSON里面的字典非常像&lt;/p&gt;
&lt;p&gt;所以同样的也存在&lt;font color=&quot;Red&quot;&gt;索引&lt;/font&gt;和&lt;font color=&quot;Red&quot;&gt;键值对&lt;/font&gt;这个概念,数组的索引只能是数字或者是字符串,但是字典的键值对可以是数字、字符串、布尔值、函数，甚至是另一个 table&lt;/p&gt;
&lt;p&gt;但是别的语言的索引是从0开始的,数组的第一个元素的位置就是0索引,但是在我们的lua中,不是这样的,而是第一个元素的位置是1索引&lt;/p&gt;
&lt;p&gt;这里我们先用for循环遍历一下数组索引，可以看到的确是第一个索引位置是   &lt;font color=&quot;Red&quot;&gt;1&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221190243229.webp&quot; alt=&quot;image-20251221190243229&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; tbl &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;apple&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;pear&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;orange&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;grape&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; val &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Key&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; key&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样的,数组可以为空,然后为空数组的索引位置赋值,也可以在创建数组时就为数组赋值,这里可以直接对索引位置赋值或者使用插入函数&lt;/p&gt;
&lt;h4 id=&quot;一使用数组索引或者键值对赋值&quot;&gt;一:使用&lt;font color=&quot;Red&quot;&gt;数组索引&lt;/font&gt;或者&lt;font color=&quot;Red&quot;&gt;键值对&lt;/font&gt;赋值&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一使用数组索引或者键值对赋值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;比如我可以直接在数组中添加元素,或者在指定索引位置添加元素,用索引获取数组元素用   &lt;font color=&quot;Red&quot;&gt;数组名[  数字(大于等于1)  ]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;但是你可以看到表里的“邦德福杰”和“达米安戴斯蒙”的写法是不是很熟悉(如果你学过字典的写法的话),没错,table还可以用于写字典&lt;/p&gt;
&lt;p&gt;字典可以使用点符号“ &lt;font color=&quot;Red&quot;&gt;.&lt;/font&gt; ”来访问字典中的属性比如   &lt;font color=&quot;Red&quot;&gt;spyfamily.x&lt;/font&gt;  就是指“邦德福杰”   不过也可以不用这个点,第二种写法如你所见,但是不是很推荐就是了(因为麻烦,还得多打几个符号)&lt;/p&gt;
&lt;p&gt;这个字典非常好用的,以后我们给游戏人物写属性时可以使用字典,不过你也看到了,数组和字典可以混用(不过不推荐这么干 ヾ(▼へ▼) NO!)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; spyfamily &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;阿尼亚福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;劳埃德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;约尔福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; x &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;邦德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;达米安戴斯蒙&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 1-based 索引&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;贝姬布莱克贝&quot;&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;尤里布莱尔&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;y&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;z&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221192607903.webp&quot; alt=&quot;image-20251221192607903&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;至于数组的遍历先不了解,因为涉及for循环,到时候讲到for循环时候再说更好理解,我们暂时还是用print一个一个的打印&lt;/p&gt;
&lt;p&gt;前面我们提到过  nil具有删除效果 我们来看一下吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; spyfamily &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Anya &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;阿尼亚福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Loid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;劳埃德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Yor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;约尔福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Bond &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;邦德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Damian &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;达米安戴斯蒙&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Becky &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;贝姬布莱克贝&quot;&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Fiona &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;菲奥娜弗洛斯特&quot;&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Yuri &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;尤里布莱尔&quot;&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;删除前:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--遍历表&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;删除后:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--比如我们要删除劳埃德和邦德&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Loid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Bond &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;nil&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--遍历表&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221200825641.webp&quot; alt=&quot;image-20251221200825641&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到  劳埃德和邦德没有了&lt;/p&gt;
&lt;p&gt;有些小伙伴可能会突发奇想——诶,假如我把table写成字典格式那还能不能使用索引访问呢&lt;/p&gt;
&lt;p&gt;如图所示,不可以,只能用字典的两种访问形式(即点语法和键值对)&lt;/p&gt;
&lt;p&gt;而且在 Lua 中，&lt;code&gt;table&lt;/code&gt; 的 &lt;strong&gt;&lt;font color=&quot;Red&quot;&gt;数字索引&lt;/font&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;font color=&quot;Red&quot;&gt;键值对&lt;/font&gt;&lt;/strong&gt; 是分开的。当表中只有字典的键值对时，&lt;strong&gt;数字索引部分是空的&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; spyfamily &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; Anya &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;阿尼亚福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Loid &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;劳埃德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Yor &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;约尔福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Bond &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;邦德福杰&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; Damian &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;达米安戴斯蒙&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Becky &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;贝姬布莱克贝&quot;&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Fiona &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;菲奥娜弗洛斯特&quot;&lt;/span&gt;
spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Yuri &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;尤里布莱尔&quot;&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--正常打印&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Anya&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Loid&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Yor&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;Bond&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--结果打印 nil&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--正常打印&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Anya&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Loid&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Yor&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; spyfamily&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Bond&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221201716415.webp&quot; alt=&quot;image-20251221201716415&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;想必你也看到了,table 不会固定长度大小，有新数据添加时 table 长度会自动增长，没初始的 table 都是 nil&lt;/p&gt;
&lt;h4 id=&quot;二使用lua内置函数赋值&quot;&gt;二:使用&lt;font color=&quot;Red&quot;&gt;lua内置函数&lt;/font&gt;赋值&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二使用lua内置函数赋值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;函数这个后面会说，这里我们先介绍一下table相关的一些函数&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;-- 创建一个空的 table&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; tbl1 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;-- 向表中添加元素&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;胡桃&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;茜特菈莉&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;纳西妲&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;tbl1 的内容：&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl1&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;-- 直接初始表&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; tbl2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;胡桃&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;茜特菈莉&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;纳西妲&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;芙宁娜&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;tbl2 的内容：&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;tbl2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221190833186.webp&quot; alt=&quot;image-20251221190833186&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;table-wrapper&quot;&gt;
































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;center&quot;&gt;函数&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.insert&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;向表中插入元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.remove&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;从表中删除元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.concat&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;将表中的元素连接成字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.sort&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;对表中的元素进行排序&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.pack&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;将多个值打包成一个表&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;center&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;table.unpack&lt;/font&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;将表中的值解包成多个值&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;第一个:   table.insert&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.insert(表名, 插入位置, 插入值)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其中插入位置可写可不写,不写的话默认插入到表的末尾&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;豌豆射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;寒冰射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;土豆地雷&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;火焰射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;insert&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;向日葵&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221215101801.webp&quot; alt=&quot;image-20251221215101801&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第二个:   table.remove&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.insert(表名, 删除位置)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其中删除位置可写可不写,不写的话默认删除表的末尾元素&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;豌豆射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;寒冰射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;土豆地雷&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;火焰射手&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221215823550.webp&quot; alt=&quot;image-20251221215823550&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第三个:   table.concat&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.concat(表名, 连接符, 开始索引, 结束索引)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;其中连接符默认为空字符串,连接符一般是逗号或者空格&lt;/li&gt;
&lt;li&gt;开始索引和结束索引表示遍历的范围,不写的话默认是遍历整个表&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; player &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;豌豆射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;寒冰射手&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;土豆地雷&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;火焰射手&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;player&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221221157964.webp&quot; alt=&quot;image-20251221221157964&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第四个:   table.sort&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.sort(表名, 排序函数)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;比较函数，默认按升序排序&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; number &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;-- 默认排序（升序）&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 

&lt;span class=&quot;token comment&quot;&gt;-- 自定义排序（降序）&lt;/span&gt;
table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;sort&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; b &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251222222825992.webp&quot; alt=&quot;image-20251222222825992&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;第五个和第六个:   table.pack    table.unpack&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.pack(....)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;table.unpack(压缩的包名,开始索引,结束索引)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;**注意啦:**这两个&lt;font color=&quot;Red&quot;&gt;只处理数组&lt;/font&gt;,不处理字典的键值对&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--也就是用pack把多个值压缩成一个表&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; packed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点赞&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;关注&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;收藏&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 点赞, 关注, 收藏&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--然后我们可以用unpack把表中的值再解压出来&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--默认全部解压&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; like&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; follow&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; favorite &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;unpack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;like&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; follow&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; favorite&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 点赞 关注 收藏&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--也可以指定解压的范围&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; like2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; follow2 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;unpack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;like2&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; follow2&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 点赞 关注&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--由于压缩后本质上是表，所以我们还可以访问表的属性,比如索引对应的值&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 点赞&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221224942807.webp&quot; alt=&quot;image-20251221224942807&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对了,还有一些可以补充的&lt;/p&gt;
&lt;p&gt;比如&quot;#&quot;操作符不仅可以用于获取字符串的长度,还可以用于获取表的长度&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token comment&quot;&gt;--也就是用pack把多个值压缩成一个表&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; packed &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;pack&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;点赞&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;关注&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;收藏&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;table&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;, &quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 点赞, 关注, 收藏&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--注意,这个&quot;.n&quot;是table.pack特有的属性,表示表中元素的数量&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;总元素数量:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; packed&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;n&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 总元素数量: 3&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--刚才说了,这个压缩包本质上还是一个表,所以你也可以用&quot;#&quot;操作符来获取元素数量&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;总元素数量:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;packed&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 总元素数量: 3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251221225822879.webp&quot; alt=&quot;image-20251221225822879&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;function函数&quot;&gt;function（函数）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#function函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;学过JavaScript的小伙伴绝对老熟悉了,因为JavaScript的函数返回值类型也是用function来代替,而在其他语言中函数前面基本上就是函数的返回值类型比如 int 或void等等,对于没学过JS的小伙伴也可以看看这两个语言有多相似&lt;/p&gt;
&lt;p&gt;但所有主流语言的函数基本上逻辑差不多,lua自然也有有参函数,无参函数或匿名函数等等区别&lt;/p&gt;
&lt;h4 id=&quot;一无参函数&quot;&gt;一,无参函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#一无参函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;function 函数名()...end&lt;/code&gt;或&lt;code&gt;函数名 = function()...end&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;注意:在其他语言中是用{ }花括号来规定函数的作用域的,但是lua这种缩进式语言需要 &lt;font color=&quot;Red&quot;&gt;end&lt;/font&gt; 这种关键字来指定函数结束位置&lt;/li&gt;
&lt;li&gt;local关键字可写可不写,要写都写,要不写都不写这样比较好看一些&lt;/li&gt;
&lt;li&gt;匿名函数在lua中也十分常用的,匿名函数可以不写函数名直接使用整个函数即可,一般可以在return返回值用匿名函数来节省代码长度&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;低调的黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--等价于(匿名函数)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; DK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;低客的黑调&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;--对于无参函数直接写函数名即可调用&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;DK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251222220743297.webp&quot; alt=&quot;image-20251222220743297&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;你可以对比一下JS语言,是不是豁然开朗了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3,3H21V21H3V3M7.73,18.04C8.13,18.89 8.92,19.59 10.27,19.59C11.77,19.59 12.8,18.79 12.8,17.04V11.26H11.1V17C11.1,17.86 10.75,18.08 10.2,18.08C9.62,18.08 9.38,17.68 9.11,17.21L7.73,18.04M13.71,17.86C14.21,18.84 15.22,19.59 16.8,19.59C18.4,19.59 19.6,18.76 19.6,17.23C19.6,15.82 18.79,15.19 17.35,14.57L16.93,14.39C16.2,14.08 15.89,13.87 15.89,13.37C15.89,12.96 16.2,12.64 16.7,12.64C17.18,12.64 17.5,12.85 17.79,13.37L19.1,12.5C18.55,11.54 17.77,11.17 16.7,11.17C15.19,11.17 14.22,12.13 14.22,13.4C14.22,14.78 15.03,15.43 16.25,15.95L16.67,16.13C17.45,16.47 17.91,16.68 17.91,17.26C17.91,17.74 17.46,18.09 16.76,18.09C15.93,18.09 15.45,17.66 15.09,17.06L13.71,17.86Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;javascript&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token constant&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;低调的黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// 等价于(匿名函数)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;token function-variable function&quot;&gt;DK&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;低客的黑调&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token constant&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token constant&quot;&gt;DK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h4 id=&quot;二有参无返回值函数&quot;&gt;二,有参无返回值函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#二有参无返回值函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;function 函数名(参数A,参数B...)...end&lt;/code&gt;或&lt;code&gt;函数名 = function(参数A,参数B...)...end&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数调用&lt;/strong&gt;: &lt;code&gt;函数名(参数A,参数B...)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;不是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--等价于(匿名函数)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; DK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;是低客的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;--对于有参函数需要写参数值,但需要和定义的位置对应&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;嘉豪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;DK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;艾鲁迪克&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;黑调&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251222222254607.webp&quot; alt=&quot;image-20251222222254607&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;三有参有返回值函数&quot;&gt;三,有参有返回值函数&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#三有参有返回值函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个分为单个返回值和多个返回值&lt;/p&gt;
&lt;h5 id=&quot;第一单个返回值&quot;&gt;第一:单个返回值&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第一单个返回值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;function 函数名(参数A,参数B...)...return 返回值 end&lt;/code&gt;或&lt;code&gt;函数名 = function(参数A,参数B...)...return 返回值 end&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数调用&lt;/strong&gt;: &lt;code&gt;变量名 = 函数名(参数A,参数B...)&lt;/code&gt;   注意,调用形式相对自由,我只说这一种最简格式&lt;/li&gt;
&lt;li&gt;关键字注意: return 关键字是函数的返回值的类型 不过lua函数返回值相当宽松,不会像其他语言那样函数的类型和返回值类型之间锁死,返回值类型非常广泛甚至可以是另一个函数或匿名函数&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;不是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; b
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; friendshipsPlainJane
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--等价于(匿名函数)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; DK &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;是低客的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; b
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; friendshipsPlainJane
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token comment&quot;&gt;--对于有参函数需要写参数值,但需要和定义的位置对应&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; hacker &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;嘉豪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; dicker &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;DK&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;艾鲁迪克&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;黑调&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hacker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dicker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251223113241497.webp&quot; alt=&quot;image-20251223113241497&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h5 id=&quot;第二多个返回值&quot;&gt;第二:多个返回值&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第二多个返回值&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法&lt;/strong&gt;：&lt;code&gt;function 函数名(参数A,参数B...)...return 返回值1,返回值2... end&lt;/code&gt;或&lt;code&gt;函数名 = function(参数A,参数B...)...return 返回值1,返回值2... end&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数调用&lt;/strong&gt;: &lt;code&gt;变量名A,变量名B... = 函数名(参数A,参数B...)&lt;/code&gt;   注意,调用形式相对自由,我只说这一种最简格式&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HD&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; b&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane_01 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;不是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; b
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane_02 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; a
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; friendshipsPlainJane_01&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; friendshipsPlainJane_02
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--对于有参函数需要写参数值,但需要和定义的位置对应&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; hacker&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dicker &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;HD&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;艾鲁迪克&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hacker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dicker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251223115913725.webp&quot; alt=&quot;image-20251223115913725&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;哦,对了,提起多个变量接收返回值的就得提一下lua变量的某些性质了——比如变量和值的个数不一致的情况&lt;/p&gt;
&lt;p&gt;第一种:&lt;/p&gt;
&lt;p&gt;变量个数 &gt; 值的个数             按变量个数补足nil&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; name
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; b &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; name
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane_01 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;不是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; friendshipsPlainJane_02 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;x&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;是低调的&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;y&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; hacker&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; dicker&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; fxxker &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;friendshipsPlainJane_01&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;嘉豪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;黑客&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;friendshipsPlainJane_02&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;艾鲁迪克&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;迪克&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;hacker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;dicker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;fxxker&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251224103930019.webp&quot; alt=&quot;image-20251224103930019&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;第二种:&lt;/p&gt;
&lt;p&gt;变量个数 &amp;#x3C; 值的个数             多余的值会被忽略&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95%E5%92%8C%E5%85%B3%E9%94%AE%E5%AD%97/image-20251224102019857.webp&quot; alt=&quot;image-20251224102019857&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;thread线程&quot;&gt;thread(线程)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#thread线程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;线程可以同时多个运行，而协程任意时刻只能运行一个，并且处于运行状态的协程只有被挂起（suspend）时才会暂停&lt;/p&gt;
&lt;p&gt;知道即可,目前没必要了解这个,等讲到协程时再说更好理解&lt;/p&gt;
&lt;h3 id=&quot;userdata自定义类型&quot;&gt;userdata（自定义类型）&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#userdata自定义类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一些小伙伴呢可能听说过甚至使用过  Raylib库 做过游戏,而userdata作用也是一样的,这么讲你应该可以瞬间理解吧&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;userdata 就是 Lua 与 C/C++ 之间的“透明快递箱”&lt;/strong&gt;——脚本层面只负责传递，真正的内容、行为、生命周期全由 C或者C++ 定义，通过元表让 Lua 看起来像普通对象&lt;/p&gt;
&lt;p&gt;说人话就是C或C++写外部库,lua用userdata类型调用这个库&lt;/p&gt;
&lt;p&gt;目前的话用不上,了解即可&lt;/p&gt;</content:encoded><category>Lua</category><category>Lua</category></item><item><title>lua---循环和条件语句</title><link>https://huyangpahuo.vercel.app/posts/lua-xun-huan-he-tiao-jian-yu-ju/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/lua-xun-huan-he-tiao-jian-yu-ju/</guid><description>本篇学习lua的循环和条件判断语句</description><pubDate>Wed, 24 Dec 2025 23:00:00 GMT</pubDate><content:encoded>&lt;h1 id=&quot;ok我们上一篇中已经了解一大堆玩意了不过还是冰山一角那么今天学学循环和if-else语句吧&quot;&gt;ok,我们上一篇中已经了解一大堆玩意了,不过还是冰山一角,那么今天学学循环和if else语句吧&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ok我们上一篇中已经了解一大堆玩意了不过还是冰山一角那么今天学学循环和if-else语句吧&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;如果你学过其他语言,绝对 对循环有回家一样的亲切感,同样的,什么for循环,while循环,do …while循环在lua中也是一样的&lt;/p&gt;
&lt;p&gt;而且if else你绝对老熟悉了&lt;/p&gt;
&lt;p&gt;前面我们挖了一个坑(就是数组的遍历部分),接下来可以讲讲了&lt;/p&gt;
&lt;p&gt;没学过的小伙伴可以看一下定义:&lt;/p&gt;
&lt;p&gt;循环是程序中用于&lt;strong&gt;重复执行&lt;/strong&gt;某段代码（循环体）的控制结构，它包含一个&lt;strong&gt;条件判断&lt;/strong&gt;和要重复执行的&lt;strong&gt;循环体&lt;/strong&gt;，直到条件不再满足时终止。&lt;/p&gt;
&lt;p&gt;一组被重复执行的语句称之为&lt;strong&gt;循环体&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我们可以画一个图&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224112935808.webp&quot; alt=&quot;image-20251224112935808&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;while循环&quot;&gt;while循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#while循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;格式:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; 判断条件 &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
   循环体
   改变条件
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;判断条件&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
   循环体
   改变条件
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; 判断条件
&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
   循环体
   改变条件
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--或者&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;判断条件&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
   循环体
   改变条件
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;你可以把do…end想像为其他语言中的花括号{ },而判断条件里的括号可写可不写  这一点和python和gdscript很像&lt;/p&gt;
&lt;p&gt;这里我用C#里的你可以对比一下&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;csharp&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-csharp&quot;&gt; &lt;span class=&quot;token comment&quot;&gt;//while 循环执行 &lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;a &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; 
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
   Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a 的值： {0}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
   a&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;while 循环语句在判断条件为 true 时会重复执行循环体语句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 罐子里的饼干数量&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝拿了一块饼干 🍪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子里还剩&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;cookies&lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;块&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子空了，爱丽丝溜了！&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224114117462.webp&quot; alt=&quot;image-20251224114117462&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;对了,while还可以制造无限循环&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
   &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝一直偷吃饼干&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224185015296.webp&quot; alt=&quot;image-20251224185015296&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;什么,你说while无限循环除了让电脑死机还有什么用,请看Unity的Update和FixedUpdate方法的本质:&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224192211585.webp&quot; alt=&quot;image-20251224192211585&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224192529730.webp&quot; alt=&quot;image-20251224192529730&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到,这两个unity脚本离不开的核心函数都是无限调用,估计  love2d 中也有类似的函数&lt;/p&gt;
&lt;h2 id=&quot;for-循环&quot;&gt;for 循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#for-循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;for 循环语句可以重复执行指定语句，重复次数可在 for 语句中控制,刚才的while循环的循环次数是不受控制的,只有不满足条件时才会跳出循环&lt;/p&gt;
&lt;p&gt;对了,lua里面没有a++,++a,a--,--a这种写法,  或者a+=1 a-=1这种写法,  只能写成a=a+1  或者a=a-1&lt;/p&gt;
&lt;p&gt;格式:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; 局部变量名&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;循环起始值&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;循环结束值&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;循环步长 &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;  
    循环体 
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;同样可以参考一下C#的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;int&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; a&lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    Console&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;WriteLine&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a 的值： {0}&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;a&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们用代码来讲更好理解一些&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--条件为 i = 1, cookies ,循环步长不写的话默认为1约等于其他语言里的 i++&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--lua默认循环条件里的变量为local局部变量,仅循环内部可用&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cookies &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;次拿饼干 🍪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子里还有&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个饼干,爱丽丝还能继续吃!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子空了,爱丽丝溜了,小桃小绿回来后很生气!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224200846230.webp&quot; alt=&quot;image-20251224200846230&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们可以改一下条件&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--条件为 i = 6, cookies&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;6&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cookies &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;次拿饼干 🍪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子里还有&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个饼干,爱丽丝还能继续吃!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子空了,爱丽丝溜了,小桃小绿回来后很生气!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224201338756.webp&quot; alt=&quot;image-20251224201338756&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们还可以验证一下循环步长的作用,这个不写的话默认为  &lt;font color=&quot;Red&quot;&gt;1&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--条件我们设置为i = 1, cookies, 2  循环步长为 2&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cookies&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;次拿饼干 🍪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;


&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子里还有&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个饼干,爱丽丝还能继续吃!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子空了,爱丽丝溜了,小桃小绿回来后很生气!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224202536414.webp&quot; alt=&quot;image-20251224202536414&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	还可以将饼干减少的逻辑封装到函数里&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;20&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;EatCookies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;number&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    number &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; number &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;return&lt;/span&gt; number
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cookies &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;次拿饼干 🍪&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;EatCookies&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;~=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子里还有&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个饼干,爱丽丝还能继续吃!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;罐子空了,爱丽丝溜了,小桃小绿回来后很生气!!!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224204337238.webp&quot; alt=&quot;image-20251224204337238&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好了,接下来把之前挖的坑填上———表的遍历学过其他语言的数组的小伙伴通常会用for循环来遍历数组,我们lua也是一般使用for循环&lt;/p&gt;
&lt;h3 id=&quot;这里的lua的遍历分为三种&quot;&gt;这里的lua的遍历分为三种:&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#这里的lua的遍历分为三种&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;ipairs遍历&quot;&gt;ipairs遍历&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ipairs遍历&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;第一种:&lt;/strong&gt; ``ipairs&lt;code&gt; —— 顺序数组遍历&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;格式(缩写版,推荐):&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;完整版&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这种遍历属于有序遍历,即从前到后, i  的值默认为1 不可更改&lt;/p&gt;
&lt;p&gt;而且遍历的时候如果遇到 nil(即遇到空值断层) 后会停止遍历,而且遍历时遇到键值对会自动跳过&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;i&lt;/code&gt; 和 &lt;code&gt;v&lt;/code&gt; 是循环过程中“每一轮自动赋值的两个局部变量”&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt; = &lt;strong&gt;当前元素的索引（key）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v&lt;/code&gt; = &lt;strong&gt;当前元素的值（value）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;奶龙&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;贝利亚&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;丰川祥子&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;千早爱音&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;橘雪莉&quot;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;唐朝最唐生物排名:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;ipairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251224234616575.webp&quot; alt=&quot;image-20251224234616575&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h4 id=&quot;pairs遍历&quot;&gt;pairs遍历&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#pairs遍历&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;第二种:&lt;/strong&gt; ``pairs&lt;code&gt; —— 通用遍历&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这个格式和 ipairs一样:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; v&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;完整版&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value &lt;span class=&quot;token keyword&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;pairs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;表名&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;index&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这种可以遍历 &lt;strong&gt;table 中所有键值对&lt;/strong&gt;（无论是数组还是字典）,但是遍历的顺序是无序的,而且不同于ipairs的是,pairs遇到nil时不会停止,而是直接跳过索引对应的空值&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251229201435729.webp&quot; alt=&quot;image-20251229201435729&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到这是没有顺序的遍历&lt;/p&gt;
&lt;h4 id=&quot;for循环遍历&quot;&gt;for循环遍历&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#for循环遍历&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;这个其实也可以采用原生的for循环遍历,不过这个for循环只支持数组,不支持字典&lt;/p&gt;
&lt;p&gt;和其他语言中用for遍历数组的方式是差不多的&lt;/p&gt;
&lt;p&gt;格式:&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; 表名 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;....&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;表名 &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; 表名&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其实就是for循环,这里就用一个例子来解释吧,我们可以变相来遍历字典实现顺序遍历&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    order &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;tang_01&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;tang_02&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;tang_03&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;tang_04&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;tang_05&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    data &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        tang_01 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;奶龙&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tang_02 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;贝利亚&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tang_03 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;丰川祥子&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tang_04 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;千早爱音&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        tang_05 &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;橘雪莉&quot;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;#&lt;/span&gt;cookies&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;order &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; key &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;order&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; cookies&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;data&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;key&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251229202822255.webp&quot; alt=&quot;image-20251229202822255&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;repeat--until-循环&quot;&gt;repeat ... until 循环&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#repeat--until-循环&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个非常有意思&lt;/p&gt;
&lt;p&gt;学过其他语言比如C C++ C#这些绝对知道  do ... while循环&lt;/p&gt;
&lt;p&gt;但是我们可以看一下 do ... while循环的特性&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;c#&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-c&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 先执行&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;// 代码语句&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;condition&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;   
&lt;span class=&quot;token comment&quot;&gt;// 条件condition为 true 时循环继续&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;// do while是先执行后判断条件,所以至少执行一次代码语句&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;但是看看我们的Lua就是相反的&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;repeat&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;-- 先执行&lt;/span&gt;
    &lt;span class=&quot;token comment&quot;&gt;--代码语句&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;until&lt;/span&gt; condition        
&lt;span class=&quot;token comment&quot;&gt;--  条件condition为 true 时循环结束&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;--  repeat until也是先执行后判断条件,所以至少执行一次代码语句&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们可以看看代码&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;repeat&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;饼干还剩:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝吃完了所有的饼干!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;until&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251229230525588.webp&quot; alt=&quot;image-20251229230525588&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们修改一下条件语句&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;repeat&lt;/span&gt;
    cookies &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;饼干还剩:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;个&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; cookies &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;爱丽丝吃完了所有的饼干!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;until&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;cookies &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20251229230749486.webp&quot; alt=&quot;image-20251229230749486&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;循环嵌套&quot;&gt;循环嵌套&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#循环嵌套&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;哦,对了,和其他语言一样,循环是可以嵌套的,一些学过其他语言的小伙伴估计已经掌握了冒泡排序,插入排序这些了....吧?&lt;/p&gt;
&lt;p&gt;这里就随便讲讲几种方式吧&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我是外层第%d次循环的第%d个&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260128222809112.webp&quot; alt=&quot;image-20260128222809112&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;string&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;format&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;我是外层第%d次循环的第%d个&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; j&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

    i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260128223129902.webp&quot; alt=&quot;image-20260128223129902&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;while&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;这是第 &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; 行，第 &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; 列&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
        j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260128223500029.webp&quot; alt=&quot;image-20260128223500029&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然还有repeat 的嵌套,不过这里不讲太多了,以后具体场景用到再说,包括那些排序算法什么的也是,现在学这些东西反正也用不上而且你们估计和我一样睡一觉起来大脑格式化了  &lt;font color=&quot;#FFD700&quot;&gt;狗头&lt;/font&gt;&lt;/p&gt;
&lt;h2 id=&quot;break关键字&quot;&gt;break关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#break关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个和其他语言里的break一模一样,&lt;code&gt;break&lt;/code&gt; 用于&lt;strong&gt;立即终止当前循环&lt;/strong&gt;,跳到循环后面的代码继续执行&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 当 i 为 5 时，直接退出整个循环&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;  &lt;span class=&quot;token comment&quot;&gt;-- 输出: 1 2 3 4&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;循环结束&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;goto关键字&quot;&gt;goto关键字&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#goto关键字&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;goto&lt;/code&gt; 是 Lua 5.2+ 引入的特性，可以跳转到&lt;strong&gt;指定的标签位置&lt;/strong&gt;,但是因为太过于自由了,容易让代码变成牵一发动全身的屎山,所以最好不要用&lt;/p&gt;
&lt;p&gt;语法格式为&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;::label::  -- 定义标签（用双冒号包裹）

goto label  -- 跳转到标签位置
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260203164601539.webp&quot; alt=&quot;image-20260203164601539&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;label&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;都给我玩终末地去,咕咕嘎嘎!&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

a &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; a &lt;span class=&quot;token operator&quot;&gt;&amp;#x3C;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;goto&lt;/span&gt; label &lt;span class=&quot;token comment&quot;&gt;-- a 小于 3 的时候跳转到标签 label&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;或者这种&lt;/p&gt;
&lt;p&gt;我把这个标签放到程序的开头,这样可以使用goto重新触发,为防止无限循环,使用break跳出&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; round &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt;

&lt;span class=&quot;token comment&quot;&gt;--重新开始标签&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;respawn&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; monkeyNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;killMonkey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    monkeyNumber &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; monkeyNumber &lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; monkeyNumber &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;还有&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; monkeyNumber &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;只猴子&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;killMonkey&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; monkeyNumber &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        round &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; round &lt;span class=&quot;token operator&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第 &quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; round &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot; 轮结束，猴子都死光了&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;token comment&quot;&gt;-- 玩家战斗一共三轮&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; round &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;游戏结束&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;break&lt;/span&gt;        &lt;span class=&quot;token comment&quot;&gt;-- 跳出 for 循环&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;goto&lt;/span&gt; respawn &lt;span class=&quot;token comment&quot;&gt;-- 还有次数，重新开始&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260203171152901.webp&quot; alt=&quot;image-20260203171152901&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;lua里面没有c语言里的那种continue,但是可以通过模拟来实现&lt;/p&gt;
&lt;p&gt;我们都知道continue的作用是跳出当前的过程不执行,但是继续该过程以后的过程&lt;/p&gt;
&lt;p&gt;比如&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;goto&lt;/span&gt; continue &lt;span class=&quot;token comment&quot;&gt;-- 跳过当前迭代&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;现在是&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;-- 输出: 1 2 4 5&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;continue&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;还有跳出多重循环&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;for&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;*&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;token keyword&quot;&gt;goto&lt;/span&gt; exit &lt;span class=&quot;token comment&quot;&gt;-- 直接跳到外层&lt;/span&gt;
        &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
        &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; i &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;行,第&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; j &lt;span class=&quot;token operator&quot;&gt;..&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;列&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;exit&lt;span class=&quot;token punctuation&quot;&gt;::&lt;/span&gt;
&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;全部结束&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;if-else语句&quot;&gt;if-else语句&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#if-else语句&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个和其他语言里的没啥区别,就是else if 变成了 elseif 写法&lt;/p&gt;
&lt;h3 id=&quot;-只写if&quot;&gt;① 只写if&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-只写if&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;400&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;速速购买黑神话吗喽&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;-if--else&quot;&gt;② if + else&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-if--else&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;速速购买黑神话吗喽&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没钱? 孩子,你还是去玩三角洲去吧&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260204173944116.webp&quot; alt=&quot;image-20260204173944116&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h3 id=&quot;-if--elseif--else&quot;&gt;③ if + elseif + else&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#-if--elseif--else&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;local&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;300&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;速速购买黑神话吗喽&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;elseif&lt;/span&gt; money &lt;span class=&quot;token operator&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;200&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;孩子,玩只狼吧&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;else&lt;/span&gt;
    &lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;没钱? 孩子,你还是去玩三角洲去吧&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260204174459317.webp&quot; alt=&quot;image-20260204174459317&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;对了,lua里的if里的这个条件可以带括号也可以不带,一般不带,不过带了可读性更高&lt;/p&gt;
&lt;p&gt;⚠️ 但是提醒一下,for循环不可以给条件语句带括号.否则会报错,但是其他循环可以&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Lua/lua---%E5%BE%AA%E7%8E%AF%E5%92%8C%E6%9D%A1%E4%BB%B6%E8%AF%AD%E5%8F%A5/image-20260204174857146.webp&quot; alt=&quot;image-20260204174857146&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;</content:encoded><category>Lua</category><category>Lua</category></item><item><title>AutoHotkey---FontColorChange工具制作</title><link>https://huyangpahuo.vercel.app/posts/autohotkey-fontcolorchange-gong-ju-zhi-zuo/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/autohotkey-fontcolorchange-gong-ju-zhi-zuo/</guid><description>解决typora中给字体上颜色困难问题</description><pubDate>Mon, 15 Dec 2025 18:52:27 GMT</pubDate><content:encoded>&lt;h2 id=&quot;本软件用于解决typora的字体上色问题&quot;&gt;本软件用于解决typora的字体上色问题&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#本软件用于解决typora的字体上色问题&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;思路是由于typora可以渲染css,所以使用css标签&lt;/p&gt;
&lt;p&gt;软件的原理是生成此类标签,使用的技术为autohotkey v2&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里我们使用&lt;code&gt;&amp;#x3C;font&gt;&lt;/code&gt;标签的color属性&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M12,17.56L16.07,16.43L16.62,10.33H9.38L9.2,8.3H16.8L17,6.31H7L7.56,12.32H14.45L14.22,14.9L12,15.5L9.78,14.9L9.64,13.24H7.64L7.93,16.43L12,17.56M4.07,3H19.93L18.5,19.2L12,21L5.5,19.2L4.07,3Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;html&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;&lt;/span&gt;font&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;color&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&apos;&lt;/span&gt;Red&lt;span class=&quot;token punctuation&quot;&gt;&apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

我是一个苹果我是红色的

&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;#x3C;/&lt;/span&gt;font&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h1 id=&quot;使用方法&quot;&gt;使用方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;注意,目前该工具已经和&lt;a href=&quot;https://github.com/huyangpahuo/TyporaWriterKit&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;TyporaWriterKit&lt;/a&gt;合并,当然源码我们仍保留&lt;a href=&quot;https://github.com/huyangpahuo/TyporaWriterKit/blob/main/AutoHotkey%20v2/FontColorChange/5/FontColorChange5(SimplifiedChinese).ahk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;源码下载&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;然后在typora中选择要变色的文字后点击色块即可&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey---FontColorChange%E5%B7%A5%E5%85%B7%E5%88%B6%E4%BD%9C/image-20261008094350478.webp&quot; alt=&quot;image-20261008094350478&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>AutoHotkey</category><category>AutoHotkey</category><category>Typora</category></item><item><title>AutoHotkey介绍</title><link>https://huyangpahuo.vercel.app/posts/autohotkey-jie-shao/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/autohotkey-jie-shao/</guid><description>AutoHotkey 是一款免费开源的 Windows 平台脚本语言，主要用于创建热键映射、自动化键鼠操作及定制用户界面</description><pubDate>Sun, 14 Dec 2025 18:52:27 GMT</pubDate><content:encoded>&lt;h1 id=&quot;autohotkey是一个windows平台脚本语言常常用于制作游戏外挂&quot;&gt;AutoHotkey是一个Windows平台脚本语言,常常用于制作游戏外挂&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#autohotkey是一个windows平台脚本语言常常用于制作游戏外挂&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;功能&quot;&gt;功能&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;启动程序，打开文件&lt;/li&gt;
&lt;li&gt;获得或产生系统状态，音量（状态，调节），搜索屏幕上的图像或像素（获得坐标），鼠标（位置，悬停视窗对象，移动），键盘（&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E7%83%AD%E9%94%AE&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;热键&lt;/a&gt;（快捷键），热字符串（键盘输入序列），上下文热键），&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E6%B8%B8%E6%88%8F%E6%9D%86&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;游戏杆&lt;/a&gt;按钮&lt;/li&gt;
&lt;li&gt;创建&lt;a href=&quot;https://zh.wikipedia.org/wiki/%E5%9B%BE%E5%BD%A2%E7%94%A8%E6%88%B7%E7%95%8C%E9%9D%A2&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;图形用户界面&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;剪贴板操作，程序窗口操作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里我们来学习如何使用&lt;/p&gt;
&lt;h2 id=&quot;下载&quot;&gt;下载&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#下载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.autohotkey.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;LightSkyBlue&quot;&gt;点击下载Autohotkey&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;官网有两个版本,有非常大的区别&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008083922375.webp&quot; alt=&quot;image-20261008083922375&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个是因为历史原因&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AutoHotkey 1.0&lt;/code&gt;- 被称为 &lt;code&gt;AutoHotkey Basic&lt;/code&gt; 或者 &lt;code&gt;AutoHotkey Classic&lt;/code&gt; 或者 &lt;code&gt;AutoHotkey Vanilla&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AutoHotkey_H&lt;/code&gt; 是由 HotkeyIt 合并了原有AutoHotkey.dll 并在 AutoHotkey_L 及 AutoHotkey v2 的基础上开发的分支。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AutoHotkey_L&lt;/code&gt; 主要由 Lexikos 在 AutoHotkey Basic 基础上开发的分支，但是现在已经变成（也被称为） &lt;a href=&quot;https://github.com/Lexikos/AutoHotkey_L/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;AutoHotkey 1.1&lt;/a&gt;的主要版本&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AutoHotkey v2&lt;/code&gt;由 Lexikos 基于&lt;code&gt;AutoHotkey_L&lt;/code&gt;代码开发，已于2022年12月20日正式发布，语法不完全兼容 &lt;code&gt;AutoHotkey 1.1&lt;/code&gt;,2023年1月22正式成为官方的默认版本&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;这里不要下载v1版本,目前此版本已停止维护&lt;/p&gt;
&lt;p&gt;v2和v1版本的最大区别就是语法完全不兼容,而且v1版本似乎存在bug比如内存泄漏&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;使用方法&quot;&gt;使用方法&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#使用方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;软件结构&quot;&gt;软件结构&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#软件结构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;autohotkey的脚本语言是&lt;code&gt;ahk&lt;/code&gt;,包括软件的本体也是由ahk语言编写&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;ahk&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;span&gt;18&lt;/span&gt;&lt;span&gt;19&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;21&lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;29&lt;/span&gt;&lt;span&gt;30&lt;/span&gt;&lt;span&gt;31&lt;/span&gt;&lt;span&gt;32&lt;/span&gt;&lt;span&gt;33&lt;/span&gt;&lt;span&gt;34&lt;/span&gt;&lt;span&gt;35&lt;/span&gt;&lt;span&gt;36&lt;/span&gt;&lt;span&gt;37&lt;/span&gt;&lt;span&gt;38&lt;/span&gt;&lt;span&gt;39&lt;/span&gt;&lt;span&gt;40&lt;/span&gt;&lt;span&gt;41&lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt;43&lt;/span&gt;&lt;span&gt;44&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;AutoHotkey_2.0.19
├── Compiler
│   └── Ahk2Exe.exe
├── UX
│   ├── Templates
│   │   └── Minimal for v2.ahk
│   ├── inc
│   │   ├── CommandLineToArgs.ahk
│   │   ├── CreateAppShortcut.ahk
│   │   ├── EnableUIAccess.ahk
│   │   ├── GetGitHubReleaseAssetURL.ahk
│   │   ├── HashFile.ahk
│   │   ├── README.txt
│   │   ├── ShellRun.ahk
│   │   ├── bounce-v1.ahk
│   │   ├── common.ahk
│   │   ├── config.ahk
│   │   ├── identify.ahk
│   │   ├── identify_regex.ahk
│   │   ├── launcher-common.ahk
│   │   ├── spy.ico
│   │   └── ui-base.ahk
│   ├── AutoHotkeyUX.exe
│   ├── WindowSpy.ahk
│   ├── install-ahk2exe.ahk
│   ├── install-version.ahk
│   ├── install.ahk
│   ├── installed-files.csv
│   ├── launcher.ahk
│   ├── reload-v1.ahk
│   ├── reset-assoc.ahk
│   ├── ui-dash.ahk
│   ├── ui-editor.ahk
│   ├── ui-launcherconfig.ahk
│   ├── ui-newscript.ahk
│   ├── ui-setup.ahk
│   └── ui-uninstall.ahk
├── v2
│   ├── AutoHotkey.chm
│   ├── AutoHotkey.exe
│   ├── AutoHotkey32.exe
│   └── AutoHotkey64.exe
├── WindowSpy.ahk
└── license.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;我们创建我们自己的ahk脚本并设置默认打开软件为autohotkey即可&lt;/p&gt;
&lt;h3 id=&quot;启动脚本&quot;&gt;启动脚本&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#启动脚本&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;我们只需双击ahk脚本就能启动程序,此时Windows右下角任务栏就能看到&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008085207515.webp&quot; alt=&quot;image-20261008085207515&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;vscode插件&quot;&gt;VScode插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#vscode插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;常见的插件如下,不过注意区分V1的插件和V2的插件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008085809959.webp&quot; alt=&quot;image-20261008085809959&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;zed插件&quot;&gt;Zed插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#zed插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;目前只有一个开发者制作了V1版本的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008090749639.webp&quot; alt=&quot;image-20261008090749639&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;ahk2exe打包插件&quot;&gt;Ahk2Exe打包插件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#ahk2exe打包插件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008092704292.webp&quot; alt=&quot;image-20261008092704292&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们点击&lt;code&gt;compile&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;选择ahk文件以及软件logo还有导出格式exe是32位还是64位&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20260716233712720-17914241892721.webp&quot; alt=&quot;image-20260716233712720&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;code&gt;convert&lt;/code&gt;,就能在这个ahk文件同目录找到这个exe文件&lt;/p&gt;
&lt;h2 id=&quot;window-spy电脑屏幕参数监测&quot;&gt;Window spy电脑屏幕参数监测&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#window-spy电脑屏幕参数监测&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/AutoHotkey/AutoHotkey%E4%BB%8B%E7%BB%8D/image-20261008093949979.webp&quot; alt=&quot;image-20261008093949979&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;</content:encoded><category>AutoHotkey</category><category>AutoHotkey</category></item><item><title>love2d入门--配置环境</title><link>https://huyangpahuo.vercel.app/posts/love2d-ru-men-pei-zhi-huan-jing/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/love2d-ru-men-pei-zhi-huan-jing/</guid><description>本篇介绍love2d的环境配置</description><pubDate>Sat, 13 Dec 2025 17:10:59 GMT</pubDate><content:encoded>&lt;h1 id=&quot;配置love2d环境和lua的环境&quot;&gt;配置love2d环境和lua的环境&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#配置love2d环境和lua的环境&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&quot;1love2d引擎下载&quot;&gt;1——love2d引擎下载&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#1love2d引擎下载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先我们进入love2d的官方网站下载love2d引擎&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.love2d.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Red&quot;&gt;点击此处下载love2d引擎&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251213180610057.webp&quot; alt=&quot;image-20251213180610057&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;选择你对应的电脑配置进行下载即可&lt;/p&gt;
&lt;p&gt;下载完成之后你会发现,这个引擎不像Unity,UnrealEngine和Godot那样拥有复杂的界面,而是一个这个样子,什么都没有,也就是说这就是一个框架&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/Snipaste_2025-12-13_18-55-32.webp&quot; alt=&quot;Snipaste_2025-12-13_18-55-32&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;在&lt;font color=&quot;Red&quot;&gt;设置&lt;/font&gt;里找到&lt;font color=&quot;Red&quot;&gt;系统&lt;/font&gt;&gt;&lt;font color=&quot;Red&quot;&gt;系统信息&lt;/font&gt;&gt;&lt;font color=&quot;LightSkyBlue&quot;&gt;高级系统设置&lt;/font&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251213190502566.webp&quot; alt=&quot;image-20251213190502566&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;点击进入会弹出一个窗口&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214225419298.webp&quot; alt=&quot;image-20251214225419298&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;font color=&quot;LightSkyBlue&quot;&gt;环境变量&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214225648823.webp&quot; alt=&quot;image-20251214225648823&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;首先点击&lt;font color=&quot;Turquoise&quot;&gt;  Path &lt;/font&gt; &gt;  &lt;font color=&quot;Turquoise&quot;&gt;编辑&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214225830224.webp&quot; alt=&quot;image-20251214225830224&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;因为Windows频繁更新可能会找不到在哪改系统路径 我们可以直接&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Red&quot;&gt;win + R&lt;/font&gt;  在窗口输入  **&lt;code&gt;sysdm.cpl&lt;/code&gt;**后点击  上方的  &lt;font color=&quot;Red&quot;&gt;高级&lt;/font&gt;   &gt;   &lt;font color=&quot;Red&quot;&gt;环境变量&lt;/font&gt;  就能打开&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;sysdm.cpl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251225212854518.webp&quot; alt=&quot;image-20251225212854518&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后点击新建   将你电脑上刚刚下载的Love2d引擎的位置 粘贴进去&lt;/p&gt;
&lt;p&gt;比如我放在了D:\Love2D\LOVE\位置     记住路径末尾的   “  &lt;font color=&quot;Red&quot;&gt; \  &lt;/font&gt; ”   符号也要加上&lt;/p&gt;
&lt;p&gt;然后点击&lt;font color=&quot;Red&quot;&gt;确定&lt;/font&gt;保存设置&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214230058175.webp&quot; alt=&quot;image-20251214230058175&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后我们输入  &lt;font color=&quot;Red&quot;&gt;Win  +  R &lt;/font&gt;  后在窗口中输入&lt;font color=&quot;Red&quot;&gt;cmd&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214230421277.webp&quot; alt=&quot;image-20251214230421277&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;如图所示,我们在控制台输入&lt;font color=&quot;Red&quot;&gt;love&lt;/font&gt;小写字母并回车,就会启动love2d引擎,代表此时路径配置正确,否则会显示love不存在&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214230744158.webp&quot; alt=&quot;image-20251214230744158&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;2vscode编辑器配置&quot;&gt;2—–VScode编辑器配置&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#2vscode编辑器配置&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;虽然写代码可以使用不同的工具,甚至可以用记事本,不过我们就不给自己挖坑了,还是用VScode最顺手&lt;/p&gt;
&lt;p&gt;没有VScode的可以点击此处下载,怎么配置就不说了,哔哩哔哩和Youtube教程一大把&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214231435460.webp&quot; alt=&quot;image-20251214231435460&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;LightSkyBlue&quot;&gt;点击前往官网下载VScode&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;由于VScode具有高度的可拓展性,所以我们可以装很多插件&lt;/p&gt;
&lt;p&gt;我们需要点击这个方块一样的玩意&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214231828518.webp&quot; alt=&quot;image-20251214231828518&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;一般它会给你推荐一些比较火的插件,额,你可以看着下载,哔哩哔哩上有很多人会给你推荐一些比较好的插件&lt;/p&gt;
&lt;p&gt;因为我比较喜欢二次元壁纸所以我推荐你下载这个插件(因为直接无脑使用就可以了,有的时候VScode自动更新需要手动重新加载一下这个插件)&lt;/p&gt;
&lt;h3 id=&quot;插件名background-cover&quot;&gt;插件名:&lt;font color=&quot;Turquoise&quot;&gt;background-cover&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名background-cover&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214232229803.webp&quot; alt=&quot;image-20251214232229803&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有这个汉化包&lt;/p&gt;
&lt;h3 id=&quot;插件名chinese-simplified-简体中文-language-pack-for-visual-studio-code&quot;&gt;插件名:&lt;font color=&quot;Turquoise&quot;&gt;Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名chinese-simplified-简体中文-language-pack-for-visual-studio-code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214232503463.webp&quot; alt=&quot;image-20251214232503463&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有主题拓展包(可以让UI变得好看)&lt;/p&gt;
&lt;h3 id=&quot;插件名vscode-icons&quot;&gt;插件名:	&lt;font color=&quot;Turquoise&quot;&gt;vscode-icons&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件名vscode-icons&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215110514223.webp&quot; alt=&quot;image-20251215110514223&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就是和Love2d和lua有关的插件了&lt;/p&gt;
&lt;p&gt;下面我会一一介绍的(当然不用也可以,插件只是辅助啦)&lt;/p&gt;
&lt;h3 id=&quot;第一个code-runner必备&quot;&gt;第一个:&lt;font color=&quot;Turquoise&quot;&gt;Code Runner&lt;/font&gt;(必备)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第一个code-runner必备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;其实就是在VScode中运行各种语言的代码,你可以右键选择run code运行脚本&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214232629063.webp&quot; alt=&quot;image-20251214232629063&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216133559087.webp&quot; alt=&quot;image-20251216133559087&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第二个github-copilot-chat&quot;&gt;第二个:&lt;font color=&quot;Turquoise&quot;&gt;GitHub Copilot Chat&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第二个github-copilot-chat&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个必须得有,AI辅助写代码的东西,就是代码自动补全,毕竟我们也不是进击的码农对吧(当然是游戏开发者啦)&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214232945728.webp&quot; alt=&quot;image-20251214232945728&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第三个-love2d-made-easy&quot;&gt;第三个: &lt;font color=&quot;Turquoise&quot;&gt;Love2d Made Easy&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第三个-love2d-made-easy&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个呢可以快速的在VScode中启动Love2d引擎的,下载后右上角就会出现一个小爱心图标&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214233227579.webp&quot; alt=&quot;image-20251214233227579&quot; style=&quot;zoom:25%;&quot;&gt;&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214233306850.webp&quot; alt=&quot;image-20251214233306850&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我来演示一遍&lt;/p&gt;
&lt;p&gt;首先新建一个&lt;font color=&quot;Red&quot;&gt;main.lua&lt;/font&gt;脚本（必须是这个名字,否则无法启动)输入以下代码,再点击右上角的小爱心,稍等片刻Love2d引擎就会启动并弹出结果—-即在引擎画面上显示一个白色长方体&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; love&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;draw&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
    love&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;graphics&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;rectangle&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;fill&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;120&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;80&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251214233727780.webp&quot; alt=&quot;image-20251214233727780&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第四个--love-launcher&quot;&gt;第四个:  &lt;font color=&quot;Turquoise&quot;&gt;love-launcher&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第四个--love-launcher&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个也是和上面那个一样的,只不过是通过快捷键启动&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215110126431.webp&quot; alt=&quot;image-20251215110126431&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;不过需要提醒的是如果你要使用这几个插件需要修改一些东西,不是直接下载就完事的&lt;/p&gt;
&lt;p&gt;首先在设置里输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;love
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216212651653.webp&quot; alt=&quot;image-20251216212651653&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;找到下方我括起来的几个,在我圈起来的地方粘贴进去 love2d引擎的文件路径,否则的话插件无法使用的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216212317024.webp&quot; alt=&quot;image-20251216212317024&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216212743222.webp&quot; alt=&quot;image-20251216212743222&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216212821315.webp&quot; alt=&quot;image-20251216212821315&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第五个-love2d-snippets&quot;&gt;第五个: &lt;font color=&quot;Turquoise&quot;&gt;Love2d Snippets&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第五个-love2d-snippets&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;其实是一个辅助性love2d语法插件&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215110310937.webp&quot; alt=&quot;image-20251215110310937&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第六个-love2d-support&quot;&gt;第六个: &lt;font color=&quot;Turquoise&quot;&gt;Love2D Support&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第六个-love2d-support&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;和上面这个一样,就是功能更智能全面&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215110341614.webp&quot; alt=&quot;image-20251215110341614&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第七个-lua&quot;&gt;第七个:&lt;font color=&quot;Turquoise&quot;&gt; Lua&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第七个-lua&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这两个下载哪一个都可以,反正也不冲突,主要是对lua语言的支持&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215111320305.webp&quot; alt=&quot;image-20251215111320305&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215111344311.webp&quot; alt=&quot;image-20251215111344311&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第八个-lua-debug&quot;&gt;第八个: &lt;font color=&quot;Turquoise&quot;&gt;Lua Debug&lt;/font&gt;&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第八个-lua-debug&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;负责Lua的Debug输出,如果已下载上面的俩,可以下载一个这个&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215111505386.webp&quot; alt=&quot;image-20251215111505386&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;3lua的下载&quot;&gt;3—–Lua的下载&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#3lua的下载&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个呢分为两个版本Lua5.1和Lua 5.4&lt;/p&gt;
&lt;p&gt;其中5.1配置最简单,但是功能没有5.4多,但是正常使用没有问题&lt;/p&gt;
&lt;h3 id=&quot;第一个版本lua-51对于不喜欢折腾的小伙伴推荐&quot;&gt;第一个版本(lua 5.1)(对于不喜欢折腾的小伙伴推荐)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第一个版本lua-51对于不喜欢折腾的小伙伴推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rjpcomputing/luaforwindows/releases/tag/v5.1.5-52&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Red&quot;&gt;点击此处跳转到github仓库&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215111940556.webp&quot; alt=&quot;image-20251215111940556&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个非常简单,甚至不需要配置path什么的,下载之后VScode会默认使用这个版本,十分方便&lt;/p&gt;
&lt;p&gt;下载完成后可以在cmd窗口检测一下下载成功没有&lt;/p&gt;
&lt;p&gt;输入 &lt;font color=&quot;Red&quot;&gt; Lua&lt;/font&gt;  ,可以看到Lua 5.1装好啦!&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;lua
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215115147067.webp&quot; alt=&quot;image-20251215115147067&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;咱们测试一下可不可以用&lt;/p&gt;
&lt;p&gt;直接输入&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello GenshinImpact&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;可以看到确实打印出来了  &lt;font color=&quot;LightSkyBlue&quot;&gt;Hello GenshinImpact&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215115527233.webp&quot; alt=&quot;image-20251215115527233&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;而且这个软件它会自带一个编译器,就是界面有点拉胯,就像上个世纪的老古董windowsXP的软件操作界面一样&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215112518663.webp&quot; alt=&quot;image-20251215112518663&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;哦,对了,提起界面拉胯的但还是比较强大的Lua编译器就不得不提这个ZeroBrane Studio了&lt;/p&gt;
&lt;p&gt;这个编译器使用Lua写的,对Lua的支持性挺好的,喜欢的话&lt;a href=&quot;https://studio.zerobrane.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Red&quot;&gt;点击此处下载ZeroBrane Studio&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215112850210.webp&quot; alt=&quot;image-20251215112850210&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215112633465.webp&quot; alt=&quot;image-20251215112633465&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后回到VScode&lt;/p&gt;
&lt;p&gt;找到左下角的这个齿轮形状的找到设置&lt;/p&gt;
&lt;p&gt;点击进去之后,在上方输入  “&lt;font color=&quot;Red&quot;&gt;executorMap&lt;/font&gt;”&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;executorMap
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;点击这个 我框选出来的第一个下方的 &lt;font color=&quot;LightSkyBlue&quot;&gt;在setting.json中编辑&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215113508716.webp&quot; alt=&quot;image-20251215113508716&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到刚才我们给插件配置的Love2d路径已经自动包含进去了,不需要手动修改了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215113929293.webp&quot; alt=&quot;image-20251215113929293&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,我们再来看看lua配置在哪个地方的,这个也是为了方便我们后续的Lua5.4的配置&lt;/p&gt;
&lt;p&gt;同样的我们打开这个我框选出来的第三个的&lt;font color=&quot;LightSkyBlue&quot;&gt;在setting.json中编辑&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215114254782.webp&quot; alt=&quot;image-20251215114254782&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;默认的话我记得没错的话下面这张图片我圈出来的这里默认写的是下面这句,表示默认使用Lua 5.1&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;“Lua”&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “Lua” &lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215114341175.webp&quot; alt=&quot;image-20251215114341175&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是能看到我修改成了另一个lua的路径,没错就是我们接下来要讲的 Lua 5.4的配置&lt;/p&gt;
&lt;p&gt;不过为了讲解我先改回来默认配置吧&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216135059105.webp&quot; alt=&quot;image-20251216135059105&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	我们测试一下,可以看到确实是用默认的lua 5.1输出的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216134937758.webp&quot; alt=&quot;image-20251216134937758&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;注意:某些小伙伴可能电脑输出中文是乱码,这是由于我们的电脑默认GBK格式,但VScode文件格式是UTF-8,&lt;/p&gt;
&lt;h4 id=&quot;终端输出的中文乱码问题解决方案一强烈推荐&quot;&gt;终端输出的中文乱码问题解决方案一(强烈推荐):&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#终端输出的中文乱码问题解决方案一强烈推荐&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;首先打开&lt;font color=&quot;Red&quot;&gt;设置&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251220120028971.webp&quot; alt=&quot;image-20251220120028971&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击右上角的这个“&lt;font color=&quot;Red&quot;&gt;打开设置(JSON)&lt;/font&gt;”,长得像小文件页一样的东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251220122633214.webp&quot; alt=&quot;image-20251220122633214&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在这个 Json文件里代码的最底下添加下方添加这几句话后保存重启VScode&lt;/p&gt;
&lt;p&gt;注意,之前  Json文件的最后一句话需要添加一个逗号“   &lt;font color=&quot;Red&quot;&gt;,&lt;/font&gt;  ”,否则会报错&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251220123050907.webp&quot; alt=&quot;image-20251220123050907&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251220122906373.webp&quot; alt=&quot;image-20251220122906373&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;11&lt;/span&gt;&lt;span&gt;12&lt;/span&gt;&lt;span&gt;13&lt;/span&gt;&lt;span&gt;14&lt;/span&gt;&lt;span&gt;15&lt;/span&gt;&lt;span&gt;16&lt;/span&gt;&lt;span&gt;17&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.profiles.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;PowerShell&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;source&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;PowerShell&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token property&quot;&gt;&quot;args&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-NoLogo&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-NoExit&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;-Command&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token string&quot;&gt;&quot;[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; $OutputEncoding=[System.Text.Encoding]::UTF8; chcp 65001 &gt; $null&quot;&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.defaultProfile.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;PowerShell&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.fontFamily&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;Consolas, &apos;Microsoft YaHei&apos;, &apos;Noto Sans CJK SC&apos;&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;token property&quot;&gt;&quot;terminal.integrated.env.windows&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;LANG&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;zh_CN.UTF-8&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;LC_ALL&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;zh_CN.UTF-8&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&quot;terminal.integrated.fontFamily&quot;: &quot;Consolas, &apos;Microsoft YaHei&apos;, &apos;Noto Sans CJK SC&apos;&quot;,这里我比较喜欢微软雅黑和Consolas字体&lt;/p&gt;
&lt;p&gt;你们要是喜欢别的字体可以调成别的字体,前提是你的电脑存在这个字体&lt;/p&gt;
&lt;h4 id=&quot;终端输出的中文乱码问题解决方案二十分不推荐会让你电脑上的某些软件直接打不开或打开后全是乱码&quot;&gt;终端输出的中文乱码问题解决方案二(十分不推荐,会让你电脑上的某些软件直接打不开或打开后全是乱码):&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#终端输出的中文乱码问题解决方案二十分不推荐会让你电脑上的某些软件直接打不开或打开后全是乱码&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;我们改一下我们的系统&lt;/p&gt;
&lt;p&gt;首先找到&lt;font color=&quot;Turquoise&quot;&gt;系统&lt;/font&gt;&gt;&lt;font color=&quot;Turquoise&quot;&gt;时间和语言&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251218211424367.webp&quot; alt=&quot;image-20251218211424367&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击&lt;font color=&quot;Red&quot;&gt;语言和地区&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251218211554958.webp&quot; alt=&quot;image-20251218211554958&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	点击&lt;font color=&quot;Red&quot;&gt;管理语言设置&lt;/font&gt;&gt;&lt;font color=&quot;Red&quot;&gt;更改系统区域设置&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251218211719500.webp&quot; alt=&quot;image-20251218211719500&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Red&quot;&gt;勾上&lt;/font&gt;这个,点击&lt;font color=&quot;Red&quot;&gt;确定&lt;/font&gt;后&lt;font color=&quot;Red&quot;&gt;重启电脑&lt;/font&gt;,就OK了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251218211835813.webp&quot; alt=&quot;image-20251218211835813&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	然后我再次改为我配置好的lua 5.4的路径(记住,每一次修改都要保存并重启VScode哦)&lt;/p&gt;
&lt;p&gt;​	可以发现结果一样,但使用的lua版本却是不一样的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216134623937.webp&quot; alt=&quot;image-20251216134623937&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;第二个版本lua-54&quot;&gt;第二个版本(lua 5.4)&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#第二个版本lua-54&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个就需要去lua的官网下载了,目前貌似是官方断更了(但听说在准备5.5版本),lua停留在了5.4版本&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.lua.org/download.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;font color=&quot;Turquoise&quot;&gt;点击这里进入lua官网&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216140207072.webp&quot; alt=&quot;image-20251216140207072&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;进入这个界面,先不要急着点击这个上面的东西,我们要点击的是这个下面的**&lt;font color=&quot;Turquoise&quot;&gt;LuaBinaries&lt;/font&gt;**这个才是我们真正要用的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216140504816.webp&quot; alt=&quot;image-20251216140504816&quot; style=&quot;zoom: 25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击之后就会跳转到这个界面,点击左边的&lt;font color=&quot;Turquoise&quot;&gt;Download&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216143138712.webp&quot; alt=&quot;image-20251216143138712&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;往下翻,找到最上面的那个,比如你的电脑是windows的就下载这个我圈起来的就行了&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216143238792.webp&quot; alt=&quot;image-20251216143238792&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216143433394.webp&quot; alt=&quot;image-20251216143433394&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击,有一个人机验证(话说你都可以看到我部署在github的这篇文章了,cloudflare的人机验证应该可以过吧),过了之后稍等片刻就会自动下载了,sourceforge服务器是在国外的可能反应慢&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216143538424.webp&quot; alt=&quot;image-20251216143538424&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,可以看到我解压到这个文件夹了,这个路径和之前在json里的一致&lt;/p&gt;
&lt;p&gt;好的,接下来的操作和Love2d的&lt;font color=&quot;Red&quot;&gt;path路径配置&lt;/font&gt;一模一样&lt;/p&gt;
&lt;p&gt;但是我为了和之前的lua5.1区分开了这样写了(当然你要是嫌麻烦可以直接把刚才下的lua5.4的文件夹路径粘进去,没有任何影响的)&lt;/p&gt;
&lt;p&gt;emmm,为防止你敲错路径,还是推荐你这样复制路径&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Red&quot;&gt;右键&lt;/font&gt;点击上方搜索栏,点击&lt;font color=&quot;Red&quot;&gt;复制地址&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216145048208.webp&quot; alt=&quot;image-20251216145048208&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;我的写法就是在环境变量里写&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;%LUA_HOME%\
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216144018274.webp&quot; alt=&quot;image-20251216144018274&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后在系统变量里新建一个&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;LUA_HOME
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216144846574.webp&quot; alt=&quot;image-20251216144846574&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;完成,记得点击确定保存!!!&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216144210694.webp&quot; alt=&quot;image-20251216144210694&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好了,我们再次回到VScode,想必你已经知道要干嘛了&lt;/p&gt;
&lt;p&gt;我们需要的是这个lua54.exe的路径,右键选择&lt;font color=&quot;Red&quot;&gt;复制文件路径&lt;/font&gt;即可,注意路径的&lt;font color=&quot;Red&quot;&gt;斜杠是两个&lt;/font&gt;哦,需要手动添加的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216145743176.webp&quot; alt=&quot;image-20251216145743176&quot; style=&quot;zoom: 50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251215114341175.webp&quot; alt=&quot;image-20251215114341175&quot; style=&quot;zoom:25%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,我们看看这个能不能用&lt;/p&gt;
&lt;p&gt;首先&lt;font color=&quot;Red&quot;&gt;win +R&lt;/font&gt;打开cmd输入&lt;font color=&quot;Red&quot;&gt;lua54&lt;/font&gt;  (是的,不是 “	lua 	”  ,   而是要加一个	“  54  ”)&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;lua54
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216150142806.webp&quot; alt=&quot;image-20251216150142806&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;输入,可以发现可以用&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M.38 10.377l-.272-.037c-.048.344-.082.695-.101 1.041l.275.016c.018-.34.051-.682.098-1.02zM4.136 3.289l-.184-.205c-.258.232-.509.48-.746.734l.202.188c.231-.248.476-.49.728-.717zM5.769 2.059l-.146-.235c-.296.186-.586.385-.863.594l.166.219c.27-.203.554-.399.843-.578zM1.824 18.369c.185.297.384.586.593.863l.22-.164c-.205-.271-.399-.555-.58-.844l-.233.145zM1.127 16.402l-.255.104c.129.318.274.635.431.943l.005.01.245-.125-.005-.01c-.153-.301-.295-.611-.421-.922zM.298 9.309l.269.063c.076-.332.168-.664.272-.986l-.261-.087c-.108.332-.202.672-.28 1.01zM.274 12.42l-.275.01c.012.348.04.699.083 1.043l.273-.033c-.042-.336-.069-.68-.081-1.02zM.256 14.506c.073.34.162.682.264 1.014l.263-.08c-.1-.326-.187-.658-.258-.99l-.269.056zM11.573.275L11.563 0c-.348.012-.699.039-1.044.082l.034.273c.338-.041.68-.068 1.02-.08zM23.221 8.566c.1.326.186.66.256.992l.27-.059c-.072-.34-.16-.682-.262-1.014l-.264.081zM17.621 1.389c-.309-.164-.627-.314-.947-.449l-.107.252c.314.133.625.281.926.439l.128-.242zM15.693.572c-.332-.105-.67-.199-1.01-.277l-.063.268c.332.076.664.168.988.273l.085-.264zM6.674 1.545c.298-.15.606-.291.916-.418L7.486.873c-.317.127-.632.272-.937.428l-.015.008.125.244.015-.008zM23.727 11.588l.275-.01a11.797 11.797 0 0 0-.082-1.045l-.273.033c.041.338.068.682.08 1.022zM13.654.105c-.346-.047-.696-.08-1.043-.098l-.014.273c.339.018.683.051 1.019.098l.038-.273zM9.544.527l-.058-.27c-.34.072-.681.16-1.014.264l.081.262c.325-.099.659-.185.991-.256zM1.921 5.469l.231.15c.185-.285.384-.566.592-.834l-.217-.17c-.213.276-.417.563-.606.854zM.943 7.318l.253.107c.132-.313.28-.625.439-.924l-.243-.128c-.163.307-.314.625-.449.945zM18.223 21.943l.145.234c.295-.186.586-.385.863-.594l-.164-.219c-.272.204-.557.4-.844.579zM21.248 19.219l.217.17c.215-.273.418-.561.607-.854l-.23-.148c-.186.285-.385.564-.594.832zM19.855 20.715l.184.203c.258-.23.51-.479.746-.732l-.201-.188c-.23.248-.477.488-.729.717zM22.359 17.504l.244.129c.162-.307.314-.625.449-.945l-.254-.107a11.27 11.27 0 0 1-.439.923zM23.617 13.629l.273.039c.049-.346.082-.695.102-1.043l-.275-.014c-.018.338-.051.682-.1 1.018zM23.156 15.621l.264.086c.107-.332.201-.67.279-1.01l-.268-.063c-.077.333-.169.665-.275.987zM22.453 6.672c.154.303.297.617.424.932l.256-.104c-.131-.322-.277-.643-.436-.953l-.244.125zM8.296 23.418c.331.107.67.201 1.009.279l.062-.268c-.331-.076-.663-.168-.986-.273l-.085.262zM10.335 23.889c.345.049.696.082 1.043.102l.014-.275c-.339-.018-.682-.051-1.019-.098l-.038.271zM17.326 22.449c-.303.154-.613.297-.926.424l.104.256c.318-.131.639-.275.947-.434l.004-.002-.123-.246-.006.002zM4.613 21.467c.274.213.562.418.854.605l.149-.23c-.285-.184-.565-.385-.833-.592l-.17.217zM12.417 23.725l.009.275c.348-.014.699-.041 1.045-.084l-.035-.271c-.336.041-.68.068-1.019.08zM6.37 22.604c.307.162.625.314.946.449l.107-.254c-.313-.133-.624-.279-.924-.439l-.129.244zM3.083 20.041c.233.258.48.51.734.746l.188-.201c-.249-.23-.49-.477-.717-.729l-.205.184zM14.445 23.475l.059.27c.34-.074.68-.162 1.014-.266l-.082-.262c-.325.099-.659.185-.991.258zM21.18.129A2.689 2.689 0 1 0 21.18 5.507 2.689 2.689 0 1 0 21.18.129zM15.324 15.447c0 .471.314.66.852.66.67 0 1.297-.396 1.297-1.016v-.645c-.23.107-.379.141-1.107.24-.735.109-1.042.306-1.042.761zM12 2.818c-5.07 0-9.18 4.109-9.18 9.18 0 5.068 4.11 9.18 9.18 9.18 5.07 0 9.18-4.111 9.18-9.18 0-5.07-4.11-9.18-9.18-9.18zm-2.487 13.77H5.771v-6.023h.769v5.346h2.974v.677zm4.13 0h-.619v-.67c-.405.57-.811.793-1.446.793-.843 0-1.38-.463-1.38-1.182v-3.271h.686v3c0 .52.347.85.893.85.719 0 1.181-.578 1.181-1.461v-2.389h.686v4.33zm-.53-8.393c0-1.484 1.205-2.689 2.689-2.689s2.688 1.205 2.688 2.689-1.203 2.688-2.688 2.688-2.689-1.203-2.689-2.688zm5.567 7.856v.52c-.223.059-.33.074-.471.074-.34 0-.637-.238-.711-.57-.381.406-.918.637-1.471.637-.877 0-1.422-.463-1.422-1.248 0-.527.256-.916.76-1.123.266-.107.414-.141 1.389-.264.545-.066.719-.191.719-.48v-.182c0-.412-.348-.645-.967-.645-.645 0-.957.24-1.016.77h-.693c.041-1 .686-1.404 1.734-1.404 1.066 0 1.627.412 1.627 1.182v2.412c0 .215.133.338.373.338.041-.002.074-.002.149-.017z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;lua&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-lua&quot;&gt;&lt;span class=&quot;token function&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;Hello GenshinImpact&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216150424248.webp&quot; alt=&quot;image-20251216150424248&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;还有甚至这两个可以视作独立的两个东西&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216150909078.webp&quot; alt=&quot;image-20251216150909078&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;好的,我们回到VScode看看这个能不能用&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251216151417633.webp&quot; alt=&quot;image-20251216151417633&quot; style=&quot;zoom: 33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;看到这里,恭喜你,成功了哦  Ciallo～(∠・ω&amp;#x3C; )⌒☆&lt;/p&gt;
&lt;p&gt;哦,对了,VScode默认的注释的颜色是灰色的很难看&lt;/p&gt;
&lt;p&gt;我们还可以在这里修改一下&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251227162217627.webp&quot; alt=&quot;image-20251227162217627&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就是这里&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251227162316558.webp&quot; alt=&quot;image-20251227162316558&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后就是和之前差不多,最后一句话的逗号不要忘了&lt;/p&gt;
&lt;p&gt;加上这几句后保存重启VScode&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M5,3H7V5H5V10A2,2 0 0,1 3,12A2,2 0 0,1 5,14V19H7V21H5C3.93,20.73 3,20.1 3,19V15A2,2 0 0,0 1,13H0V11H1A2,2 0 0,0 3,9V5A2,2 0 0,1 5,3M19,3A2,2 0 0,1 21,5V9A2,2 0 0,0 23,11H24V13H23A2,2 0 0,0 21,15V19A2,2 0 0,1 19,21H17V19H19V14A2,2 0 0,1 21,12A2,2 0 0,1 19,10V5H17V3H19M12,15A1,1 0 0,1 13,16A1,1 0 0,1 12,17A1,1 0 0,1 11,16A1,1 0 0,1 12,15M8,15A1,1 0 0,1 9,16A1,1 0 0,1 8,17A1,1 0 0,1 7,16A1,1 0 0,1 8,15M16,15A1,1 0 0,1 17,16A1,1 0 0,1 16,17A1,1 0 0,1 15,16A1,1 0 0,1 16,15Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;json&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-json&quot;&gt;&lt;span class=&quot;token property&quot;&gt;&quot;editor.tokenColorCustomizations&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token property&quot;&gt;&quot;comments&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;#40E0D0&quot;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;其中这个16进制是颜色值,我比较喜欢绿宝石色,你们可以替换为自己喜欢的&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251227162619613.webp&quot; alt=&quot;image-20251227162619613&quot; style=&quot;zoom:50%;&quot;&gt;&lt;/p&gt;
&lt;p&gt;​	&lt;img src=&quot;https://huyangpahuo.vercel.app/images/Love2d/love2d%E5%85%A5%E9%97%A8--%E9%85%8D%E7%BD%AE%E7%8E%AF%E5%A2%83/image-20251227162407207.webp&quot; alt=&quot;image-20251227162407207&quot; style=&quot;zoom:33%;&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;剩下的以后再慢慢学吧--がんばれ&quot;&gt;剩下的以后再慢慢学吧,  がんばれ!&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#剩下的以后再慢慢学吧--がんばれ&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;</content:encoded><category>Love2d</category><category>Love2d</category><category>Lua</category></item><item><title>blender mcprep插件无法打开jmc2obj软件问题解决方案</title><link>https://huyangpahuo.vercel.app/posts/blender-mcprep-cha-jian-wu-fa-da-kai-jmc2obj-ruan-jian-wen-ti-jie-jue-fang-an/</link><guid isPermaLink="true">https://huyangpahuo.vercel.app/posts/blender-mcprep-cha-jian-wu-fa-da-kai-jmc2obj-ruan-jian-wen-ti-jie-jue-fang-an/</guid><description>解决jmc2obj jar文件无法打开启用的问题</description><pubDate>Wed, 03 Dec 2025 13:11:59 GMT</pubDate><content:encoded>&lt;h1 id=&quot;将我的世界的地图插入blender需要用到两种工具---mineways和jmc2obj&quot;&gt;将我的世界的地图插入blender需要用到两种工具---mineways和jmc2obj&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#将我的世界的地图插入blender需要用到两种工具---mineways和jmc2obj&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/d4f8ad0471a4441f84548eceb322b134.webp&quot; alt=&quot;d4f8ad0471a4441f84548eceb322b134&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;h2 id=&quot;插件导入&quot;&gt;插件导入&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#插件导入&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;插件怎么导入想必你们都会,&lt;/p&gt;
&lt;p&gt;这个插件支持快速打开jmc2obj和mineways这两个可以将我的世界的地图以obj格式导入到blender中的工具&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/0a1d03374d06414d99c0d5c9740a75f3.webp&quot; alt=&quot;0a1d03374d06414d99c0d5c9740a75f3&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;快速打开方式就是:&lt;/p&gt;
&lt;p&gt;只需要在blender中按   &lt;font color=&quot;Turquoise&quot;&gt;N键&lt;/font&gt;  点击  &quot;&lt;font color=&quot;Turquoise&quot;&gt;MCprep&lt;/font&gt;&quot;  插件,&lt;/p&gt;
&lt;p&gt;然后在 &quot;&lt;font color=&quot;Turquoise&quot;&gt;MCprep工具&lt;/font&gt;&quot;  一栏中点击   &quot;&lt;font color=&quot;Turquoise&quot;&gt;高级&lt;/font&gt;&quot;  右边的 &lt;font color=&quot;Turquoise&quot;&gt;齿轮形状的图标&lt;/font&gt;,就会弹出 &quot;&lt;font color=&quot;Turquoise&quot;&gt;偏好设置&lt;/font&gt;&quot;  窗口并自动定位到   &quot;&lt;font color=&quot;Turquoise&quot;&gt;插件&lt;/font&gt;&quot; 位置,&lt;/p&gt;
&lt;p&gt;此时只需要在这两个位置制定jmc2obj和mineways这两个工具的路径&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/e8f4459c48dd411f92baabc7e3bf2d17.webp&quot; alt=&quot;e8f4459c48dd411f92baabc7e3bf2d17&quot;&gt;
&lt;p&gt;其中mineways只需要导入exe文件的路径即可,最好不要有中文,这个还是很简单的&lt;/p&gt;
&lt;p&gt;打开的话点击这个地方&lt;font color=&quot;Turquoise&quot;&gt;Open Mineways &lt;/font&gt; 就可以了,打开jmc2obj也是同理,自己试试就知道了&lt;/p&gt;
&lt;p&gt;当然,你也可以选择直接在blender外打开exe 或者jar文件来运行软件,就是多了去找这两个文件的操作十分不爽&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/0eca3a8d0e1c4cd9a35c11779821297e.webp&quot; alt=&quot;img&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/0a5df6d92b804eda834e76409d0462eb.webp&quot; alt=&quot;0a5df6d92b804eda834e76409d0462eb&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;但是对于jmc2obj，这是一个jar 文件,双击的话或者在blender里&quot; Open jmc2obj &quot;大概率是打不开的,一般是需要java来打开的&lt;/p&gt;
&lt;h2 id=&quot;检测java是否安装&quot;&gt;检测java是否安装&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#检测java是否安装&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;这个时候首先看看你们电脑上有没有&lt;font color=&quot;Red&quot;&gt;java&lt;/font&gt;,  win+R在小窗口输入&quot;&lt;font color=&quot;Red&quot;&gt;cmd&lt;/font&gt;&quot;小写字母&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;cmd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/e3b21f2c4d84485ba97e63b8ca33fa6d.webp&quot; alt=&quot;e3b21f2c4d84485ba97e63b8ca33fa6d&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;呼出界面后输入&quot;&lt;font color=&quot;Red&quot;&gt;where java&lt;/font&gt;&quot;,中间有一个空格不要忘了&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;where java
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/7ea6413e217d466a8498a4cdbde7d322.webp&quot; alt=&quot;7ea6413e217d466a8498a4cdbde7d322&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;如图所示,可以看到我的电脑有两个java,这里我用的是放到&lt;font color=&quot;Red&quot;&gt;D盘里的java&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;好的,接下来给java配置到电脑的&lt;font color=&quot;Red&quot;&gt;PATH&lt;/font&gt;路径&lt;/p&gt;
&lt;h2 id=&quot;给java配置到电脑的path路径&quot;&gt;给java配置到电脑的PATH路径&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#给java配置到电脑的path路径&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先找到电脑&quot;&lt;font color=&quot;Red&quot;&gt;设置&lt;/font&gt;&quot;，里的&quot;&lt;font color=&quot;Red&quot;&gt;系统&lt;/font&gt;&quot;  我这个是&lt;font color=&quot;Red&quot;&gt;windows 11&lt;/font&gt; ,不知道其他版本系统怎么设置&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/c1c02604da294a029b83abaefad0d651.webp&quot; alt=&quot;c1c02604da294a029b83abaefad0d651&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;找到最底下的&quot; &lt;font color=&quot;Red&quot;&gt;系统信息 &lt;/font&gt;&quot;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/b10d807a003a4bb9a615ef69e9a12940.webp&quot; alt=&quot;b10d807a003a4bb9a615ef69e9a12940&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;点击进去后如图&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/1086f6ad4edd446d9e589550ff3f7508.webp&quot; alt=&quot;1086f6ad4edd446d9e589550ff3f7508&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;这里有三个很显眼的&lt;font color=&quot;LightSkyBlue&quot;&gt;蓝色&lt;/font&gt;字体,选择右边的&quot;&lt;font color=&quot;LightSkyBlue&quot;&gt;高级系统设置&lt;/font&gt;&quot;&lt;/p&gt;
&lt;p&gt;就会弹出这个界面&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/e70a3c71863343048f7ff992567255e4.webp&quot; alt=&quot;e70a3c71863343048f7ff992567255e4&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;点击底下的&quot;&lt;font color=&quot;Red&quot;&gt;环境变量&lt;/font&gt;&quot;&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/9f2d010b1d9340b89dcd71b18b427b73.webp&quot; alt=&quot;9f2d010b1d9340b89dcd71b18b427b73&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;找到path&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/5d19b3e04b78430b8e105a27f0eeff01.webp&quot; alt=&quot;5d19b3e04b78430b8e105a27f0eeff01&quot; style=&quot;zoom:33%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/b964c044a4e84648b228d203210aef92.webp&quot; alt=&quot;b964c044a4e84648b228d203210aef92&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;点击右边的&quot;&lt;font color=&quot;Red&quot;&gt;新建&lt;/font&gt;&quot;,添加jdk的bin文件到path&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/9b6b9c0f0450474ebfa63bce9fa61ed5.webp&quot; alt=&quot;9b6b9c0f0450474ebfa63bce9fa61ed5&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;新建注册表把jdk文件路径填入&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/7879b1973be14750beb7958b59ed838d.webp&quot; alt=&quot;7879b1973be14750beb7958b59ed838d&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;检查刚才的英文大小写,检查空格,检查有没有多打字&lt;/p&gt;
&lt;p&gt;我们进入下一步&lt;/p&gt;
&lt;h2 id=&quot;如何打开jmc2obj-jar文件&quot;&gt;如何打开jMc2Obj-###.jar文件&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#如何打开jmc2obj-jar文件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/c3ef44b16dc04f5f9a7c917b5a667e6e.webp&quot; alt=&quot;c3ef44b16dc04f5f9a7c917b5a667e6e&quot; style=&quot;zoom: 50%;&quot;&gt;
&lt;p&gt;首先&lt;font color=&quot;Red&quot;&gt;win+R&lt;/font&gt;输入&lt;font color=&quot;Red&quot;&gt;regedit&lt;/font&gt;进入&lt;font color=&quot;Red&quot;&gt;注册表编辑器&lt;/font&gt;&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;regedit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/264dd202ef594ac499d7853dce78629f.webp&quot; alt=&quot;264dd202ef594ac499d7853dce78629f&quot; style=&quot;zoom: 33%;&quot;&gt;
&lt;p&gt;一直往下翻翻翻翻找到这个&lt;font color=&quot;Red&quot;&gt;jarfile&lt;/font&gt;,然后一层一层的打开直到出现右边的东西并右键&lt;font color=&quot;Red&quot;&gt;默认&lt;/font&gt;的这个东西&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/f33eb291e55144499991ba976a7755b2.webp&quot; alt=&quot;f33eb291e55144499991ba976a7755b2&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;点击&lt;font color=&quot;Red&quot;&gt;修改&lt;/font&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/95696d65d0bd4569a1e7cc094ea88eb6.webp&quot; alt=&quot;95696d65d0bd4569a1e7cc094ea88eb6&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;将里面的路径&lt;/p&gt;
&lt;p&gt;&lt;code&gt;D:\Java学习软件\jdk\jdk-23文件\bin\java.exe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;替换为你们的&lt;font color=&quot;Red&quot;&gt;java路径&lt;/font&gt;,这里我已经换好了,注意这后面的&lt;code&gt;-jar &quot;%1&quot; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;不要动&lt;/p&gt;
&lt;p&gt;点击确定即可,注意空格键的存在和引号是&lt;font color=&quot;Red&quot;&gt;英文&lt;/font&gt;的&lt;/p&gt;
&lt;p&gt;你们看看电脑里&lt;font color=&quot;Red&quot;&gt; jMc2Obj-###.jar&lt;/font&gt;(我下载的是127最新版本,你们的自己看看) 文件放到哪个文件夹&lt;/p&gt;
&lt;p&gt;然后右击jar文件用&lt;font color=&quot;Red&quot;&gt;java&lt;/font&gt;打开&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/7598f2601672436fb01e3ab93ea6db82.webp&quot; alt=&quot;7598f2601672436fb01e3ab93ea6db82&quot; style=&quot;zoom: 25%;&quot;&gt;
&lt;p&gt;或者点击&lt;font color=&quot;Red&quot;&gt;属性&lt;/font&gt;,在打开方式里更改用&lt;font color=&quot;Red&quot;&gt;java&lt;/font&gt;打开,这个是为了方便一些上一步打开方式选错的人&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/45ecd3d530214201b0f3ab41cb0bfb21.webp&quot; alt=&quot;45ecd3d530214201b0f3ab41cb0bfb21&quot; style=&quot;zoom:33%;&quot;&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/853962d5dba94ab7a6c41d7a2b46e32f.webp&quot; alt=&quot;853962d5dba94ab7a6c41d7a2b46e32f&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/87b67b5bf932410aa519965d8fad64bb.webp&quot; alt=&quot;87b67b5bf932410aa519965d8fad64bb&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;然后发现如果还是打不开的话,我们进一步操作&lt;/p&gt;
&lt;p&gt;首先检查jar文件的完整性,毕竟jMc2Obj原作者是发布到github上的&lt;/p&gt;
&lt;p&gt;国内可能由于网路问题下载文件不完全&lt;/p&gt;
&lt;p&gt;先在jar文件所在的文件夹空白处右键点击在&quot;&lt;font color=&quot;Red&quot;&gt;在终端中打开&lt;/font&gt;&quot;,打开我们的&lt;font color=&quot;Red&quot;&gt;powershell&lt;/font&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ddd7141277a1414fbd33c0936a094564.webp&quot; alt=&quot;ddd7141277a1414fbd33c0936a094564&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;先输入&quot; &lt;font color=&quot;Red&quot;&gt;  dir  &lt;/font&gt;&quot;回车&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;dir
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/916df44a71474524ac71229a05f8d66d.webp&quot; alt=&quot;916df44a71474524ac71229a05f8d66d&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;出现这几行字尤其是中间的一行就行了&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;Teal&quot;&gt;-a----         2025/10/2     16:11        9897475 jMc2Obj-127.jar&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;其他两个目前你们是没有的,等会再说&lt;/p&gt;
&lt;p&gt;然后再输入以下命令检查是否存在&lt;font color=&quot;Red&quot;&gt;jMc2Obj-###.jar文件&lt;/font&gt;,###是你们的版本号&lt;/p&gt;
&lt;p&gt;刚才的这一行字应该会提示你们具体的版本号,我的是127版本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;java -jar jMc2Obj-127.jar
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;如果出现以下结果就是正确的&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/477cc0874aa84e7a8c069734cd16025f.webp&quot; alt=&quot;477cc0874aa84e7a8c069734cd16025f&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/98d53fdafd094206a89ad3dabf6514de.webp&quot; alt=&quot;98d53fdafd094206a89ad3dabf6514de&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/a71036e47d204628b17b9ccb84f26b30.webp&quot; alt=&quot;a71036e47d204628b17b9ccb84f26b30&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;这代表启动&lt;font color=&quot;Teal&quot;&gt;jMc2Obj&lt;/font&gt;成功而且你们百分之一百会遇到这个错误&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/a42b2f481dcf4658a4c6d44cc6d5c788.webp&quot; alt=&quot;a42b2f481dcf4658a4c6d44cc6d5c788&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;这是因为无法检测java的版本更新导致的,因为java的创造者sun公司倒闭了&lt;/p&gt;
&lt;p&gt;very very sick  ( º﹃º )&lt;/p&gt;
&lt;p&gt;不过我们的&lt;font color=&quot;Teal&quot;&gt;jMc2Obj&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;已经打开了如图,出现一个大界面和一个小窗口即&lt;font color=&quot;Red&quot;&gt;console控制台&lt;/font&gt;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/a213ef0d588946d693e456985fccf6f1.webp&quot; alt=&quot;a213ef0d588946d693e456985fccf6f1&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;然后我们就可以在这里导入MC  的&lt;font color=&quot;Red&quot;&gt;saves &lt;/font&gt;文件里的存档世界文件&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/a6a017e1ed5344f8a17a24eca7350942.webp&quot; alt=&quot;a6a017e1ed5344f8a17a24eca7350942&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;点击&quot;&lt;font color=&quot;Red&quot;&gt;加载世界&lt;/font&gt;&quot;&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/1b7613aec91141528bcb7371cb9d42a6.webp&quot; alt=&quot;1b7613aec91141528bcb7371cb9d42a6&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;p&gt;至于怎么用网上一堆教程,大家自己可以去学习一下&lt;/p&gt;
&lt;h2 id=&quot;更加便携的打开jmc2obj的操作方式&quot;&gt;更加便携的打开jMc2Obj的操作方式&lt;a class=&quot;heading-anchor&quot; tabindex=&quot;-1&quot; aria-label=&quot;heading anchor&quot; href=&quot;#更加便携的打开jmc2obj的操作方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们使用bat脚本&lt;/p&gt;
&lt;div class=&quot;code-block&quot;&gt;&lt;div class=&quot;code-header&quot;&gt;&lt;span class=&quot;code-lang&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;text&lt;/span&gt;&lt;button class=&quot;code-copy&quot; type=&quot;button&quot; onclick=&quot;window.__blogCopyCode(this)&quot;&gt;&lt;svg class=&quot;mdi-icon&quot; width=&quot;1em&quot; height=&quot;1em&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;span&gt;复制&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;code-body&quot;&gt;&lt;div class=&quot;code-gutter&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;pre class=&quot;code-pre&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;@echo off
title jMc2Obj NowYouCanStart
java -Djmc.checkupdate=false -jar &quot;%~dp0jMc2Obj-127.jar&quot; 2&gt;nul
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/e1f6b4f25d73476e9ad031edacc3584e.webp&quot; alt=&quot;e1f6b4f25d73476e9ad031edacc3584e&quot; style=&quot;zoom:25%;&quot;&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/449fbdeab88a4f48bb87b35373b7dbe5.webp&quot; alt=&quot;449fbdeab88a4f48bb87b35373b7dbe5&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;可以发现文件样子变了,而且还出现了一个&lt;font color=&quot;LightSkyBlue&quot;&gt;conf  &lt;/font&gt;  文件夹&lt;/p&gt;
&lt;p&gt;表示已成功运行&lt;/p&gt;
&lt;p&gt;出现这个&lt;font color=&quot;Red&quot;&gt;叉掉&lt;/font&gt;就行,不用管它,因为还是那个java更新问题&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/249dd92aedbf427fa010849a10e96a2a.webp&quot; alt=&quot;249dd92aedbf427fa010849a10e96a2a&quot; style=&quot;zoom:80%;&quot;&gt;
&lt;p&gt;但是怎么在blender中打开呢,答案是mineways怎么添加和打开的,jMc2Obj 就怎么打开&lt;/p&gt;
&lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ed36aaa6846e4bbeade486542fa10652.webp&quot; alt=&quot;ed36aaa6846e4bbeade486542fa10652&quot; style=&quot;zoom:33%;&quot;&gt;
&lt;p&gt;即把这个start.bat文件当做exe文件来使用&lt;/p&gt;
 &lt;img src=&quot;https://huyangpahuo.vercel.app/images/%E7%94%B5%E8%84%91%E6%97%A5%E5%B8%B8/blender-mcprep%E6%8F%92%E4%BB%B6%E6%97%A0%E6%B3%95%E6%89%93%E5%BC%80jmc2obj%E8%BD%AF%E4%BB%B6%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/0a5df6d92b804eda834e76409d0462eb.webp&quot; alt=&quot;0a5df6d92b804eda834e76409d0462eb&quot; style=&quot;zoom:50%;&quot;&gt;
&lt;p&gt;点击&quot; &lt;font color=&quot;Turquoise&quot;&gt;Open jmc2obj&lt;/font&gt; &quot;就大功告成了&lt;/p&gt;</content:encoded><category>电脑日常</category><category>Jmc2obj</category><category>Blender</category></item></channel></rss>