feat: 集成离线数字货币图标系统

 新功能:
- 下载16个主流币种图标(BTC, ETH, USDT, BNB, SOL等)
- 创建 CoinIcon 组件,支持离线图标和兜底显示
- 更新 CoinAvatar 组件,使用新的 CoinIcon
- 更新 market_page.dart 中的 _CoinAvatar 组件

📦 资源:
- 图标存放在 flutter_monisuo/assets/icons/crypto/
- 使用 Cryptocurrency Icons 开源图标库
- PNG 格式,128x128 像素

🎯 特性:
- 支持自定义大小
- 支持圆形背景
- 未找到图标时显示币种代码(兜底方案)
- 支持深色/浅色模式

📝 修改文件:
- 新增:flutter_monisuo/lib/ui/components/coin_icon.dart
- 新增:flutter_monisuo/assets/icons/crypto/*.png (16个)
- 修改:flutter_monisuo/pubspec.yaml
- 修改:flutter_monisuo/lib/ui/pages/trade/components/coin_avatar.dart
- 修改:flutter_monisuo/lib/ui/pages/market/market_page.dart

-  后端构建成功 (2.0s)
-  Flutter Web 构建成功 (24.1s)
- ⚠️ Admin: TypeScript类型错误(已知问题)
This commit is contained in:
2026-04-07 03:39:20 +08:00
parent fe7dd15b5e
commit dff698e9bb
125 changed files with 33260 additions and 33144 deletions

View File

@@ -1,15 +1,15 @@
((a,b)=>{a[b]=a[b]||{}})(self,"$__dart_deferred_initializers__")
$__dart_deferred_initializers__.current=function(a,b,c,$){var B,A={
b7l(d,e,f){var y,x,w=null,v=new B.a0(),u=new B.a0()
u=new A.a_O(v,u)
b7o(d,e,f){var y,x,w=null,v=new B.a0(),u=new B.a0()
u=new A.a_Q(v,u)
u.bh(d,w,e,w)
y=u.a
x=v.r
x.toString
y.r=x
v.r=A.bqA(u)
v.r=A.bqD(u)
return u},
bpg(d,e){var y
bpj(d,e){var y
A:{if("timePicker.hours"===e){y="\u0427\u0430\u0441\u044b"
break A}if("timePicker.minutes"===e){y="\u041c\u0438\u043d\u0443\u0442\u044b"
break A}if("timePicker.seconds"===e){y="\u0421\u0435\u043a\u0443\u043d\u0434\u044b"
@@ -23,38 +23,38 @@ break A}if("input.selectAll"===e){y="\u0412\u044b\u0431\u0440\u0430\u0442\u044c
break A}if("keyboardToolbar.done"===e){y="\u0413\u043e\u0442\u043e\u0432\u043e"
break A}y=null
break A}return y},
bqA(d){return new A.aVd(d)},
a_O:function a_O(d,e){var _=this
bqD(d){return new A.aVf(d)},
a_Q:function a_Q(d,e){var _=this
_.r=d
_.z=_.w=$
_.a=e
_.e=_.b=$},
aRf:function aRf(){},
aVd:function aVd(d){this.a=d},
abX:function abX(){}}
aRh:function aRh(){},
aVf:function aVf(d){this.a=d},
abZ:function abZ(){}}
B=c[0]
A=a.updateHolder(c[64],A)
A.a_O.prototype={
A.a_Q.prototype={
h(d,e){var y=this.r.a7(e)
return y==null?this.a.a7(e):y},
gb9(){var y=this,x=y.z
if(x===$){if(y.w===$)y.w=y
x=y.z=new A.aRf()}return x},
x=y.z=new A.aRh()}return x},
gbe(){return this.r}}
A.aRf.prototype={
A.aRh.prototype={
gbj(){return"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c"},
gbi(){return"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c"},
gbk(){return"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c"},
gbg(){return"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0451"}}
A.abX.prototype={}
A.abZ.prototype={}
var z=a.updateTypes([])
A.aVd.prototype={
$1(d){return A.bpg(this.a,d)},
A.aVf.prototype={
$1(d){return A.bpj(this.a,d)},
$S:2};(function inheritance(){var y=a.mixin,x=a.inherit
x(A.abX,B.Z)
x(A.a_O,A.abX)
x(A.aRf,B.b4)
x(A.aVd,B.aW)
y(A.abX,B.b_)})()
B.b9(b.typeUniverse,JSON.parse('{"a_O":{"Z":[]}}'))};
(a=>{a["7XduPjqPdVDGd0dAQw56XM8nmPg="]=a.current})($__dart_deferred_initializers__);
x(A.abZ,B.Z)
x(A.a_Q,A.abZ)
x(A.aRh,B.b4)
x(A.aVf,B.aW)
y(A.abZ,B.b_)})()
B.b9(b.typeUniverse,JSON.parse('{"a_Q":{"Z":[]}}'))};
(a=>{a["vaQjSbufxUGQ4pI73gYPmzkW5Es="]=a.current})($__dart_deferred_initializers__);