banxiang/lib/screens/doctor_list_screen.dart
2026-02-17 16:10:18 +08:00

84 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import '../models/hospital.dart';
import '../services/medical_service.dart';
import 'booking_screen.dart';
class DoctorListScreen extends StatelessWidget {
final Hospital hospital;
final String department;
const DoctorListScreen({
required this.hospital,
required this.department,
});
@override
Widget build(BuildContext context) {
final doctors = MedicalService.getDoctorsByDepartment(department);
return Scaffold(
appBar: AppBar(title: Text('$department - 选择医生')),
body: doctors.isEmpty
? Center(child: Text('暂无医生'))
: ListView.builder(
padding: EdgeInsets.all(16),
itemCount: doctors.length,
itemBuilder: (context, index) {
final doctor = doctors[index];
return Card(
margin: EdgeInsets.only(bottom: 12),
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => BookingScreen(
hospital: hospital,
doctor: doctor,
),
),
);
},
child: Padding(
padding: EdgeInsets.all(16),
child: Row(
children: [
CircleAvatar(
radius: 30,
child: Text(doctor.name[0]),
),
SizedBox(width: 16),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
doctor.name,
style: TextStyle(fontSize: 18, fontWeight: FontWeight.w500),
),
SizedBox(height: 4),
Text(doctor.title, style: TextStyle(color: Colors.grey)),
],
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text('挂号费', style: TextStyle(fontSize: 12, color: Colors.grey)),
Text(
'¥${doctor.fee}',
style: TextStyle(fontSize: 18, color: Color(0xFF333333)),
),
],
),
],
),
),
),
);
},
),
);
}
}