import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:smartledz_wifi_test/models/wifi_model.dart'; class WifiItem extends StatefulWidget { final WifiModel wifiModel; // wifi模型 final bool active; // 是否选中 final Function(WifiModel wifiModel)? onTap; // 是否选中 const WifiItem({ super.key, required this.wifiModel, this.active = false, this.onTap, }); @override State createState() => _WifiItemState(); } class _WifiItemState extends State { // 测试结果与颜色的对应关系 final Map resultAsColor = { "未测试": Colors.grey, "正在测试": Colors.blue, "测试通过": Colors.green, "未通过": Colors.red, }; @override Widget build(BuildContext context) { Color resultColor = Colors.grey; if(resultAsColor.containsKey(widget.wifiModel.result)){ resultColor = resultAsColor[widget.wifiModel.result]!; } return GestureDetector( onTap: ()=>widget.onTap?.call(widget.wifiModel), child: Container( height: 40.sp, decoration: BoxDecoration( color: widget.active? Colors.pink.shade100: null, border: Border( bottom: BorderSide(color: Colors.grey, width: .5.sp) ) ), child: Row( children: [ Expanded( child: Container( alignment: Alignment.centerLeft, padding: EdgeInsets.symmetric(horizontal: 5.sp), child: Text(widget.wifiModel.ssid, style: TextStyle(fontSize: 16.sp)), ), ), Container( alignment: Alignment.center, width: 50.w, decoration: BoxDecoration( border: Border.symmetric(vertical: BorderSide(color: Colors.grey, width: .5.sp)) ), child: Text(widget.wifiModel.rssi.toString(), style: TextStyle(fontSize: 14.sp, color: Colors.green)), ), Container( alignment: Alignment.center, width: 80.w, child: Text(widget.wifiModel.result, style: TextStyle(fontSize: 14.sp, color: resultColor)), ), ], ), ), ); } }