Flutter Firebase搜索栏显示AppUserData实例而非用户名求助
解决搜索建议显示“Instance of 'AppUserData'”的问题
问题根源在于自定义类AppUserData默认的toString()方法输出,或是searchfield组件未正确提取用户名字段,以下两种方案可解决该问题:
方案一:重写AppUserData的toString()方法
在AppUserData类中添加重写方法,直接返回用户名字段:
class AppUserData { final String username; // 其他字段定义... AppUserData({required this.username, /* 其他构造参数 */}); // 重写toString方法,返回用户名 @override String toString() { return username; // 替换为你实际的用户名字段名 } }
修改后searchfield会自动调用该方法显示用户名,无需调整组件代码。
方案二:自定义searchfield的建议项UI
若不想修改数据类,可通过SearchField的itemBuilder参数自定义建议项的显示内容,灵活性更高:
SearchField( // 从StreamProvider获取用户列表 suggestions: Provider.of<List<AppUserData>>(context), // 自定义每个建议项的展示 itemBuilder: (context, suggestion) { return Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Text(suggestion.username), // 直接访问用户名字段 ); }, // 其他必要配置(如onSuggestionTap等) )
注意:确保AppUserData类中存在正确的用户名字段(如示例中的username),且该字段已从Firebase成功读取。
内容的提问来源于stack exchange,提问作者Ghali Skalli
相关产品推荐
相关产品推荐

