package app import ( "context" "sync" ) // Instance 全局应用单例,持有 ctx 和托盘引用 type Instance struct { mu sync.RWMutex ctx context.Context name string } // App 应用上下文入口 type App struct { instance *Instance } var singleton *Instance var once sync.Once // Init 初始化应用全局上下文(只调用一次) func Init() *App { once.Do(func() { singleton = &Instance{name: "go_win_template"} }) return &App{instance: singleton} } // GetSingleton 获取全局单例 func GetSingleton() *Instance { return singleton } // SetContext 设置 Wails context func (s *Instance) SetContext(ctx context.Context) { s.mu.Lock() defer s.mu.Unlock() s.ctx = ctx } // Context 获取当前 context func (s *Instance) Context() context.Context { s.mu.RLock() defer s.mu.RUnlock() return s.ctx }