87 lines
No EOL
2.9 KiB
Dart
87 lines
No EOL
2.9 KiB
Dart
// Version: 1.5 - 見積書画面(簡易実装)
|
|
import 'package:flutter/material.dart';
|
|
import '../models/customer.dart';
|
|
|
|
/// 見積書作成画面
|
|
class EstimateScreen extends StatefulWidget {
|
|
const EstimateScreen({super.key});
|
|
|
|
@override
|
|
State<EstimateScreen> createState() => _EstimateScreenState();
|
|
}
|
|
|
|
class _EstimateScreenState extends State<EstimateScreen> {
|
|
Customer? _selectedCustomer;
|
|
List<Customer> _customers = [];
|
|
DateTime? _expiryDate;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_loadCustomers();
|
|
}
|
|
|
|
Future<void> _loadCustomers() async {
|
|
// TODO: DatabaseHelper.instance.getCustomers() を使用
|
|
setState(() => _customers = []);
|
|
}
|
|
|
|
/// 見積有効期限を設定(簡易)
|
|
void setExpiryDate(DateTime date) {
|
|
setState(() => _expiryDate = date);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('見積書')),
|
|
body: _selectedCustomer == null
|
|
? const Center(child: Text('得意先を選択してください'))
|
|
: SingleChildScrollView(
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(16),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
|
children: [
|
|
// 見積有効期限設定エリア(簡易)
|
|
ListTile(
|
|
contentPadding: EdgeInsets.zero,
|
|
title: const Text('見積有効期限'),
|
|
subtitle: _expiryDate != null ? Text('${_expiryDate!.day}/${_expiryDate!.month}') : const Text('-'),
|
|
trailing: IconButton(icon: const Icon(Icons.calendar_today), onPressed: () {
|
|
// TODO: デイティピッカーの実装
|
|
}),
|
|
),
|
|
|
|
const Divider(),
|
|
|
|
// 合計金額表示(簡易)
|
|
Card(
|
|
child: ListTile(
|
|
contentPadding: EdgeInsets.zero,
|
|
title: const Text('見積書合計'),
|
|
subtitle: const Text('¥0.00'),
|
|
trailing: IconButton(icon: const Icon(Icons.edit), onPressed: () {}),
|
|
),
|
|
),
|
|
|
|
const SizedBox(height: 16),
|
|
|
|
// PDF 帳票出力ボタン(簡易)
|
|
TextButton.icon(
|
|
onPressed: () {
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
const SnackBar(content: Text('PDF 帳票生成中...')),
|
|
);
|
|
},
|
|
icon: const Icon(Icons.download),
|
|
label: const Text('PDF をダウンロード'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
} |