fix(client): NotificationBell.onTap 恢复 required 非空(对齐规范)

- notification_bell.dart: VoidCallback? → VoidCallback(字段非空)
- content_top_bar.dart: 在 null-guard 内用 onBell! 传给 NotificationBell
- flutter analyze: No issues found

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-07-12 17:57:02 +08:00
parent df19629944
commit 2d37ef1e7b
3 changed files with 51 additions and 2 deletions
+1 -1
View File
@@ -63,7 +63,7 @@ class ContentTopBar extends ConsumerWidget {
),
if (onBell != null) ...[
const SizedBox(width: 12),
NotificationBell(onTap: onBell, hasUnread: true),
NotificationBell(onTap: onBell!, hasUnread: true),
],
if (showThemeToggle) ...[
const SizedBox(width: 12),
+1 -1
View File
@@ -10,7 +10,7 @@ import 'pangolin_icons.dart';
class NotificationBell extends ConsumerWidget {
const NotificationBell({super.key, required this.onTap, this.hasUnread = false});
final VoidCallback? onTap;
final VoidCallback onTap;
final bool hasUnread;
@override
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env bash
# 本地联调一键启动:pay(mock 渠道) + pangolin server + 官网 /buy 购买页。
# 仅本地测试用。密钥是 throwaway 值,勿用于生产,勿提交真值。
#
# 端口(本机因 :8080 被 dudu 项目、:4321 被另一 astro 占用而错开):
# pay :8090 (SERVER_PORT)
# pangolin :8083 (ADDR)
# 官网 :4321→自动顺延(实际看启动日志,本次是 :4322),用 http://localhost:PORT/buy/
#
# 依赖:redis(本机已有 server-redis-1 容器在 :6379;没有就 `docker run -d -p 6379:6379 redis:7-alpine`)
set -euo pipefail
SECRET="localdev_pangolin_secret_2026" # 两侧共用的本地 throwaway HMAC 密钥
PAY_DIR="/Users/wangjia/code/pay"
PG_DIR="/Users/wangjia/code/pangolin/.claude/worktrees/pay-v2-integration/server"
WEB_DIR="/Users/wangjia/code/pangolin/.claude/worktrees/pay-v2-integration/web/website"
DB="/tmp/pg-pangolin.db"
JWT="/tmp/pg-jwt_priv.pem"
LOGDIR="/tmp/pg-l13-logs"; mkdir -p "$LOGDIR"
echo "== redis 探活 =="
redis_ok=$(docker exec server-redis-1 redis-cli ping 2>/dev/null || echo "")
[ "$redis_ok" = "PONG" ] || { echo "redis 未就绪:请先 docker run -d -p 6379:6379 redis:7-alpine"; exit 1; }
echo "== JWT 密钥 =="
[ -f "$JWT" ] || openssl genrsa -out "$JWT" 2048
echo "== pangolin sqlite 迁移 =="
( cd "$PG_DIR" && DB_DRIVER=sqlite DB_DSN="$DB" go run ./cmd/migrate up )
echo "== 起 pay(:8090,mock 渠道,webhook tick 2s)=="
( cd "$PAY_DIR" && MOCK_CHANNEL_ENABLED=true SERVER_PORT=8090 WEBHOOK_TICK_SECONDS=2 \
BIZ_PANGOLIN_SECRET="$SECRET" go run . > "$LOGDIR/pay.log" 2>&1 & )
echo "== 起 pangolin(:8083,sqlite,接 pay :8090)=="
( cd "$PG_DIR" && DB_DRIVER=sqlite DB_DSN="$DB" ADDR=:8083 REDIS_ADDR=127.0.0.1:6379 \
JWT_PRIVATE_KEY_PATH="$JWT" JWT_KEY_ID=dev-1 \
PAY_BASE_URL=http://127.0.0.1:8090 PAY_BIZ_SECRET="$SECRET" PAY_BIZ_SYSTEM=pangolin \
go run ./cmd/server > "$LOGDIR/pangolin.log" 2>&1 & )
echo "== 起官网(astro dev,proxy /v1→:8083 /paydev→:8090)=="
( cd "$WEB_DIR" && npm run dev > "$LOGDIR/website.log" 2>&1 & )
echo
echo "启动中… 约 15s 后:"
echo " 官网购买页 → 看 $LOGDIR/website.log 里的 Local 端口(本次 http://localhost:4322/buy/)"
echo " 登录账号 → paytest@gmail.com / testpass12345 (已注册;换邮箱需先注册)"
echo " 日志 → $LOGDIR/{pay,pangolin,website}.log"
echo " 停止 → lsof -ti tcp:8090,8083,4321,4322 | xargs kill"