Flutter如何判断JSON中存在指定值以控制Container的显隐
Flutter 条件显示指定组件实现方案
实现逻辑
你只需要先校验kindController.kindDataList中是否存在market对应的数据,再通过Flutter的条件渲染语法控制组件显隐即可。
完整实现代码
import 'package:flutter/material.dart'; // 首先在你的组件build方法内先做数据存在性判断 @override Widget build(BuildContext context) { // 校验逻辑,根据你的Kinds模型结构二选一即可 // 方案1:如果kindDataList每条数据对应一个分类,带有type字段标记分类类型 bool hasMarket = kindController.kindDataList.any((item) => item.type == 'market'); // 方案2:如果kindDataList单条数据包含三类数据的集合 // bool hasMarket = kindController.kindDataList.first.markets.isNotEmpty; return Scaffold( body: Column( children: [ // 其他已有的组件 if (hasMarket) // 你需要显示的market对应组件 Container( child: Padding( padding: EdgeInsets.symmetric( horizontal: Dimensions.PADDING_SIZE_SMALL), child: IntrinsicHeight( child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Expanded( child: Column(children: [ Padding( padding: EdgeInsets.symmetric(vertical: Dimensions .PADDING_SIZE_SMALL, horizontal: Dimensions.PADDING_SIZE_SMALL), child: HomeFlatBtn( image: 'market', height: 150, currentTab: 1,), ), Padding( padding: EdgeInsets.symmetric(horizontal: Dimensions .PADDING_SIZE_SMALL), child: HomeFlatBtn( image: 'grocery', height: 150, currentTab: 1,), ), ] ), ), Expanded(child: HomeFlatBtn(image: 'food', height: 0, currentTab: 1), ), ], ), ), ), ), // 其他后续组件 ], ), ); }
说明
如果你的Kinds模型字段命名和示例不同,只需要调整hasMarket的判断逻辑匹配你的实际字段即可,不需要修改组件渲染部分的代码。
内容的提问来源于stack exchange,提问作者Ismail Muhammad
相关产品推荐
相关产品推荐

