sql - 如何在特定事务的屏幕中从 SQLite 数据库中获取保存的数据?
问题描述
我正在制作一个应用程序,用户可以在其中保存交易数据,他们可以通过填写以下表格来完成 交易然后将保存在数据库中,并可以在以下屏幕上显示给用户 正在保存的详细信息表格是名称、金额注释、类别、日期以及是否不需要交易。但我想在图 2 中显示的详细信息是名称、金额和日期。现在要查看其余详细信息,用户可以单击特定交易,然后应该会打开一个新页面,显示交易的详细信息,如下所示
我该怎么做?我的意思是如果我点击上面的交易页面应该显示。
我正在使用以下代码创建我的数据库:
await database.execute(
"CREATE TABLE $TABLE_EXPENSES ("
"$COLUMN_ID INTEGER PRIMARY KEY,"
"$COLUMN_NAME TEXT,"
"$COLUMN_AMOUNT INTEGER,"
"$COLUMN_UNNECESSARYEXPENSES INTEGER,"
"$COLUMN_CATEGORY TEXT,"
"$COLUMN_DATETIME TEXT,"
"$COLUMN_COMMENTS TEXT"
")",
);
编辑:
我用于映射的代码:
class expense {
int id;
String name;
int amount;
bool isUnnecessaryExpenses;
String category;
DateTime dateTime;
String pickedDate;
String comments;
expense({this.id, this.name, this.amount, this.isUnnecessaryExpenses, this.category, this.dateTime, this.pickedDate, this.comments});
Map toMap() {
var map = {
DatabaseProvider.COLUMN_NAME: name,
DatabaseProvider.COLUMN_AMOUNT: amount,
DatabaseProvider.COLUMN_UNNECESSARYEXPENSES: isUnnecessaryExpenses ? 1 : 0,
DatabaseProvider.COLUMN_CATEGORY: category,
DatabaseProvider.COLUMN_DATETIME: pickedDate,
DatabaseProvider.COLUMN_COMMENTS: comments,
};
if (id != null) {
map[DatabaseProvider.COLUMN_ID] = id;
}
return map;
}
expense.fromMap(Map map) {
id = map[DatabaseProvider.COLUMN_ID];
name = map[DatabaseProvider.COLUMN_NAME];
amount = map[DatabaseProvider.COLUMN_AMOUNT];
isUnnecessaryExpenses = map[DatabaseProvider.COLUMN_UNNECESSARYEXPENSES] == 1;
category= map[DatabaseProvider.COLUMN_CATEGORY];
pickedDate = map[DatabaseProvider.COLUMN_DATETIME];
comments = map[DatabaseProvider.COLUMN_COMMENTS];
}
}
我在以下代码的帮助下在图 2 中显示交易:
ListTile(
leading: CircleAvatar(
backgroundColor: Colors.indigo,
foregroundColor: Colors.white,
child: Text(
expensess.name
.substring(0, 1)
.toUpperCase(),
style: TextStyle(fontSize: 32, fontWeight: FontWeight.bold),
),
),
title: Text(
expensess.name ?? "Title",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 30,
color: Colors.black,
),
),
subtitle: Text(
"Amount: ${expensess.amount.toString()}"
"\nDate: ${expensess.pickedDate}\n"
,style: TextStyle(
fontStyle: FontStyle.italic,
fontSize: 20,
color: Colors.black,
),
),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context)=> ViewTransaction()));
}
));
}
viewTransaction() 如下:
class ViewTransaction extends StatefulWidget {
@override
_ViewTransactionState createState() => _ViewTransactionState();
}
类 _ViewTransactionState 扩展状态 { @override
void initState(){
super.initState();
DatabaseProvider.db.getExpenses().then(
(expenseList) {
BlocProvider.of<ExpenseBloc>(context).add(SetExpenses(expenseList));
},
);
}
Widget build(BuildContext context) {
expense expenses;
return Scaffold(
appBar: AppBar(backgroundColor: Colors.white, title: Text(expenses.name),),
);
}
}
请帮忙。感谢您的回复。
解决方案
推荐阅读
- angular - 如何在角度 2+ 的外部文件中设置 api 端点 url
- php - 如何从 php 在 exec 中运行 rsync?
- javascript - 使用 es6 快捷方式减少代码片段中的行数
- python - ID 和月份上的 Groupby 列,并为每个月分配值作为新的 colmuns
- python - (已解决)- 在 Linux 中使用 Eric-IDE 和 pyenv
- python - 如何根据其他数据框的条件删除熊猫组
- python - Django:ModuleNotFoundError:没有名为“sslserver”的模块
- android - 每次切换标签时,AnyChart AreaChart 都会翻倍
- php - FFMPEG 执行退出代码 126
- c++ - std::atomic 中的任何内容都无需等待?