feat(item): 添加物品详情页面并优化物品列表

- 新增 DetailItemScreen 组件,用于展示物品详细信息
- 在 ItemListScreen 中添加物品列表项的点击事件,跳转到物品详情页面- 修改 Item 模型,将 isInUse 字段类型从 String改为 String?
- 更新数据库表结构,将 is_in_use 列类型从 INTEGER 改为 TEXT
This commit is contained in:
LingandRX 2025-04-29 23:19:13 +08:00
parent ba0a8eb654
commit 4903d7d5a8
5 changed files with 40 additions and 4 deletions

View File

@ -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'))
);

View File

@ -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<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'category_id': categoryId,
'location_id': locationId,

View File

@ -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<ItemListScreen> {
return ListTile(
title: Text(item.name),
subtitle: Text(item.description ?? ""),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailItemScreen(item: item),
),
);
},
);
}));
}),

View File

@ -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}')
]
)
)
);
}
}