feat(item): 添加物品详情页面并优化物品列表
- 新增 DetailItemScreen 组件,用于展示物品详细信息 - 在 ItemListScreen 中添加物品列表项的点击事件,跳转到物品详情页面- 修改 Item 模型,将 isInUse 字段类型从 String改为 String? - 更新数据库表结构,将 is_in_use 列类型从 INTEGER 改为 TEXT
This commit is contained in:
parent
ba0a8eb654
commit
4903d7d5a8
@ -6,7 +6,7 @@ CREATE TABLE items (
|
|||||||
location_id INTEGER,
|
location_id INTEGER,
|
||||||
description TEXT,
|
description TEXT,
|
||||||
purchase_date TEXT,
|
purchase_date TEXT,
|
||||||
is_in_use INTEGER DEFAULT 0,
|
is_in_use TEXT DEFAULT 'no',
|
||||||
created_at TEXT DEFAULT (datetime('now')),
|
created_at TEXT DEFAULT (datetime('now')),
|
||||||
updated_at TEXT DEFAULT (datetime('now'))
|
updated_at TEXT DEFAULT (datetime('now'))
|
||||||
);
|
);
|
||||||
|
|||||||
@ -11,7 +11,7 @@ class Item {
|
|||||||
// 购买日期
|
// 购买日期
|
||||||
final DateTime? purchaseDate;
|
final DateTime? purchaseDate;
|
||||||
// 是否使用
|
// 是否使用
|
||||||
final String isInUse;
|
final String? isInUse;
|
||||||
final DateTime? createdAt;
|
final DateTime? createdAt;
|
||||||
final DateTime? updatedAt;
|
final DateTime? updatedAt;
|
||||||
|
|
||||||
@ -29,7 +29,6 @@ class Item {
|
|||||||
|
|
||||||
Map<String, dynamic> toMap() {
|
Map<String, dynamic> toMap() {
|
||||||
return {
|
return {
|
||||||
'id': id,
|
|
||||||
'name': name,
|
'name': name,
|
||||||
'category_id': categoryId,
|
'category_id': categoryId,
|
||||||
'location_id': locationId,
|
'location_id': locationId,
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:item_tracker/provider/item_provider.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 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import 'item_screens/detail_item_screen.dart';
|
||||||
|
|
||||||
class ItemListScreen extends StatefulWidget {
|
class ItemListScreen extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
_ItemListScreenState createState() => _ItemListScreenState();
|
_ItemListScreenState createState() => _ItemListScreenState();
|
||||||
@ -46,6 +48,14 @@ class _ItemListScreenState extends State<ItemListScreen> {
|
|||||||
return ListTile(
|
return ListTile(
|
||||||
title: Text(item.name),
|
title: Text(item.name),
|
||||||
subtitle: Text(item.description ?? ""),
|
subtitle: Text(item.description ?? ""),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => DetailItemScreen(item: item),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
|
|||||||
27
lib/screens/item_screens/detail_item_screen.dart
Normal file
27
lib/screens/item_screens/detail_item_screen.dart
Normal 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}')
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user