Flutter端GrowthBook功能更新无法即时生效的解决方案咨询
Flutter GrowthBook 即时同步功能配置方案
你遇到的问题是因为仅在应用启动时初始化一次GrowthBook SDK,默认情况下SDK不会主动拉取配置更新,可通过以下方式实现即时同步:
1. 确保复用单例SDK实例
首先修正你的代码,避免每次访问gbApp都重新初始化(当前代码每次调用都会新建实例),改为单例模式:
GrowthBookSDK? _gbInstance; Future<GrowthBookSDK> get gbApp async { if (_gbInstance == null) { _gbInstance = await GBSDKBuilderApp( hostURL: Env.gbHostUrl, apiKey: Env.gbClientKey, growthBookTrackingCallBack: (gbExperiment, gbExperimentResult) { // TODO: 添加埋点回调 }, ).initialize(); } return _gbInstance!; }
2. 手动触发配置刷新
在需要获取最新配置的时机(比如应用从后台切回前台、用户触发刷新操作),调用SDK实例的refreshFeatures()方法拉取最新配置:
// 获取单例实例 final gb = await gbApp; // 拉取最新功能配置 await gb.refreshFeatures(); // 此时获取的功能值就是最新的 final isNewFeatureEnabled = gb.isOn('your-feature-key');
3. 配置自动轮询刷新
如果需要SDK定期自动同步配置,可以在初始化时设置refreshInterval参数(单位:秒),SDK会按照指定间隔自动拉取最新配置:
_gbInstance = await GBSDKBuilderApp( hostURL: Env.gbHostUrl, apiKey: Env.gbClientKey, growthBookTrackingCallBack: (gbExperiment, gbExperimentResult) { // TODO: 添加埋点回调 }, refreshInterval: 60, // 每60秒自动刷新一次 ).initialize();
注意:自动轮询会增加网络请求次数,建议根据业务场景选择合适的间隔,或者结合手动刷新(比如后台激活时)来平衡实时性和性能。不要每次获取功能值前重新初始化SDK,这会导致性能损耗和状态不一致问题,复用单例+手动/自动刷新是最优方案。
内容的提问来源于stack exchange,提问作者Naufal Rajabi
相关产品推荐
相关产品推荐

