You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Firebase:根据Status字段动态修改TextStyle样式

解决方案:根据Firestore动态字段修改Text样式

先修正你现有代码里的两处问题,再添加动态样式逻辑:

final uid = FirebaseAuth.instance.currentUser!.uid;
CollectionReference users = FirebaseFirestore.instance.collection('users');

StreamBuilder(
  stream: users.doc(uid).snapshots(),
  builder: (BuildContext context, AsyncSnapshot snapshot) {
    // 处理加载状态
    if (snapshot.connectionState == ConnectionState.waiting) {
      return const Center(child: CircularProgressIndicator());
    }

    // 处理无数据或错误情况
    if (!snapshot.hasData || snapshot.hasError) {
      return const Text('获取状态失败');
    }

    String status = snapshot.data['Status'];
    TextStyle statusStyle;

    // 根据不同Status值设置对应样式
    switch (status) {
      case 'not verified':
        statusStyle = const TextStyle(color: Colors.red, fontWeight: FontWeight.bold);
        break;
      case 'pending verification':
        statusStyle = const TextStyle(color: Colors.orange, fontWeight: FontWeight.w500);
        break;
      case 'verified':
        statusStyle = const TextStyle(color: Colors.green, fontWeight: FontWeight.bold);
        break;
      default:
        statusStyle = const TextStyle(color: Colors.grey);
        break;
    }

    return Text(status, style: statusStyle);
  },
),

关键说明:

  • 把原错误的ConnectionState判断改为ConnectionState.waiting,这是正确的加载状态判断方式
  • 增加snapshot.hasData和snapshot.hasError判断,避免空指针或错误状态下的崩溃
  • 通过switch语句匹配不同status值,生成对应的TextStyle,你可以按需调整颜色、字体粗细、字号等属性
  • 将生成的样式传给Text组件的style参数,实现动态样式切换

内容的提问来源于stack exchange,提问作者Eben Oasis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 02:17:21