From 4903d7d5a8331451d784be8e9fefb24e672abf11 Mon Sep 17 00:00:00 2001 From: LingandRX Date: Tue, 29 Apr 2025 23:19:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(item):=20=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E5=93=81=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=89=A9=E5=93=81=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 DetailItemScreen 组件,用于展示物品详细信息 - 在 ItemListScreen 中添加物品列表项的点击事件,跳转到物品详情页面- 修改 Item 模型,将 isInUse 字段类型从 String改为 String? - 更新数据库表结构,将 is_in_use 列类型从 INTEGER 改为 TEXT --- lib/database/item_table.dart | 2 +- lib/models/item_model.dart | 3 +-- lib/screens/item_list_screen.dart | 12 ++++++++- .../add_item_screen.dart | 0 .../item_screens/detail_item_screen.dart | 27 +++++++++++++++++++ 5 files changed, 40 insertions(+), 4 deletions(-) rename lib/screens/{addItem => item_screens}/add_item_screen.dart (100%) create mode 100644 lib/screens/item_screens/detail_item_screen.dart diff --git a/lib/database/item_table.dart b/lib/database/item_table.dart index cd9e5cb..96280be 100644 --- a/lib/database/item_table.dart +++ b/lib/database/item_table.dart @@ -6,7 +6,7 @@ CREATE TABLE items ( location_id INTEGER, description TEXT, purchase_date TEXT, - is_in_use INTEGER DEFAULT 0, + is_in_use TEXT DEFAULT 'no', created_at TEXT DEFAULT (datetime('now')), updated_at TEXT DEFAULT (datetime('now')) ); diff --git a/lib/models/item_model.dart b/lib/models/item_model.dart index f8e8ba9..bf1aee4 100644 --- a/lib/models/item_model.dart +++ b/lib/models/item_model.dart @@ -11,7 +11,7 @@ class Item { // 购买日期 final DateTime? purchaseDate; // 是否使用 - final String isInUse; + final String? isInUse; final DateTime? createdAt; final DateTime? updatedAt; @@ -29,7 +29,6 @@ class Item { Map toMap() { return { - 'id': id, 'name': name, 'category_id': categoryId, 'location_id': locationId, diff --git a/lib/screens/item_list_screen.dart b/lib/screens/item_list_screen.dart index 45199ef..276916f 100644 --- a/lib/screens/item_list_screen.dart +++ b/lib/screens/item_list_screen.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; import 'package:item_tracker/provider/item_provider.dart'; -import 'package:item_tracker/screens/addItem/add_item_screen.dart'; +import 'package:item_tracker/screens/item_screens/add_item_screen.dart'; import 'package:provider/provider.dart'; +import 'item_screens/detail_item_screen.dart'; + class ItemListScreen extends StatefulWidget { @override _ItemListScreenState createState() => _ItemListScreenState(); @@ -46,6 +48,14 @@ class _ItemListScreenState extends State { return ListTile( title: Text(item.name), subtitle: Text(item.description ?? ""), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailItemScreen(item: item), + ), + ); + }, ); })); }), diff --git a/lib/screens/addItem/add_item_screen.dart b/lib/screens/item_screens/add_item_screen.dart similarity index 100% rename from lib/screens/addItem/add_item_screen.dart rename to lib/screens/item_screens/add_item_screen.dart diff --git a/lib/screens/item_screens/detail_item_screen.dart b/lib/screens/item_screens/detail_item_screen.dart new file mode 100644 index 0000000..387df53 --- /dev/null +++ b/lib/screens/item_screens/detail_item_screen.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; +import 'package:item_tracker/models/item_model.dart'; + +class DetailItemScreen extends StatelessWidget { + final Item item; + + DetailItemScreen({required this.item}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('${item.name}'), + ), + body: Padding( + padding: EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('名称: ${item.toMap().toString()}'), + Text('描述: ${item.description}') + ] + ) + ) + ); + } +} \ No newline at end of file