CommunityAPP/lib/visitor.dart

116 lines
3.5 KiB
Dart
Raw Normal View History

import 'package:flutter/material.dart';
class VisitorPage extends StatelessWidget {
final ScrollController scrollController;
const VisitorPage({super.key, required this.scrollController});
@override
Widget build(BuildContext context) {
return Column(
children: [
Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
decoration: const BoxDecoration(
color: Color(0xFF9EAF9F),
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
),
child: Row(
children: [
IconButton(
icon: const Icon(Icons.close, color: Colors.white),
onPressed: () => Navigator.pop(context),
),
const SizedBox(width: 8),
const Text(
'訪客來訪紀錄',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 20,
color: Colors.white,
),
),
],
),
),
Expanded(
child: Container(
color: const Color(0xFFF7F8FA),
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
child: ListView(
controller: scrollController,
children: [
const Text(
'📝 訪客紀錄',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
const SizedBox(height: 12),
_buildVisitorItem('2025/04/22 14:35', '王小明', '身分:朋友|目的:拜訪林小安'),
_buildVisitorItem('2025/04/21 10:20', '陳美麗', '身分:水電師傅|目的:維修浴室'),
_buildVisitorItem(
'2025/04/20 17:45',
'李建國',
'身分外送員目的送晚餐Uber Eats',
),
],
),
),
),
],
);
}
Widget _buildVisitorItem(String date, String name, String detail) {
return Container(
padding: const EdgeInsets.symmetric(vertical: 12),
decoration: const BoxDecoration(
border: Border(bottom: BorderSide(color: Color(0xFFEEEEEE))),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
date,
style: const TextStyle(fontSize: 14, color: Color(0xFF555555)),
),
Text(
name,
style: const TextStyle(fontSize: 14, color: Color(0xFF555555)),
),
],
),
const SizedBox(height: 4),
Text(
detail,
style: const TextStyle(fontSize: 13, color: Color(0xFF777777)),
),
],
),
);
}
}
// 👇 包裝元件一樣寫在這
class VisitorPageWrapper extends StatelessWidget {
const VisitorPageWrapper({super.key});
@override
Widget build(BuildContext context) {
return DraggableScrollableSheet(
initialChildSize: 0.95,
minChildSize: 0.5,
maxChildSize: 1.0,
expand: false,
builder: (_, scrollController) {
return Container(
decoration: const BoxDecoration(color: Colors.transparent),
child: VisitorPage(scrollController: scrollController),
);
},
);
}
}