Commit 2ed6da52 authored by netyouli's avatar netyouli

添加创作记录查询

parent a5e04e48
...@@ -363,8 +363,11 @@ ...@@ -363,8 +363,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/RunnerProfile.entitlements;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2; CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU; DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = Z99J24WADU;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.3; FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
...@@ -376,6 +379,8 @@ ...@@ -376,6 +379,8 @@
MARKETING_VERSION = 5; MARKETING_VERSION = 5;
PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app; PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "iOS Team Store Provisioning Profile: com.wudi.app";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
...@@ -496,8 +501,11 @@ ...@@ -496,8 +501,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/RunnerDebug.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/RunnerDebug.entitlements;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2; CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU; DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = Z99J24WADU;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.3; FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
...@@ -509,6 +517,8 @@ ...@@ -509,6 +517,8 @@
MARKETING_VERSION = 5; MARKETING_VERSION = 5;
PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app; PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "iOS Team Store Provisioning Profile: com.wudi.app";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
...@@ -523,8 +533,11 @@ ...@@ -523,8 +533,11 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 2; CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = Z99J24WADU; DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = Z99J24WADU;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FLUTTER_BUILD_NAME = 1.0.3; FLUTTER_BUILD_NAME = 1.0.3;
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
...@@ -536,6 +549,8 @@ ...@@ -536,6 +549,8 @@
MARKETING_VERSION = 5; MARKETING_VERSION = 5;
PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app; PRODUCT_BUNDLE_IDENTIFIER = com.wudi.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "iOS Team Store Provisioning Profile: com.wudi.app";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0; SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
......
...@@ -21,21 +21,21 @@ class DBTool { ...@@ -21,21 +21,21 @@ class DBTool {
return; return;
} }
final basePath = await getDatabasesPath(); final basePath = await getDatabasesPath();
final path = '$basePath$_dbName.db'; final path = '$basePath/$_dbName.db';
_db = await openDatabase(path, version: _version); _db = await openDatabase(path, version: _version);
} }
static Future<bool> _isExistTable(String tableName) async { static Future<bool> _isExistTable(String tableName) async {
//内建表sqlite_master //内建表sqlite_master
var sql ="SELECT * FROM sqlite_master WHERE TYPE = 'table' AND NAME = '$tableName'"; final sql ="SELECT * FROM sqlite_master WHERE TYPE = 'table' AND NAME = '$tableName'";
var res = await _db?.rawQuery(sql); final res = await _db?.rawQuery(sql);
var isExist = res != null && res.isNotEmpty; final isExist = res != null && res.isNotEmpty;
return isExist; return isExist;
} }
static Future<void> _createTable(DBModel model) async { static Future<void> _createTable(DBModel model) async {
await _initDB(model); await _initDB(model);
var isExist = await _isExistTable(model.tableName); final isExist = await _isExistTable(model.tableName);
if (!isExist) { if (!isExist) {
await _db?.execute(model.createTableSql); await _db?.execute(model.createTableSql);
} }
...@@ -49,7 +49,7 @@ class DBTool { ...@@ -49,7 +49,7 @@ class DBTool {
static Future<int> update(DBModel model, {String? where, bool? isInsert = false}) async { static Future<int> update(DBModel model, {String? where, bool? isInsert = false}) async {
await _createTable(model); await _createTable(model);
if (isInsert ?? false) { if (isInsert ?? false) {
final list = await query(model.tableName, where: where); final list = await query(model, where: where);
if (list.isEmpty) { if (list.isEmpty) {
return await insert(model); return await insert(model);
} }
...@@ -57,8 +57,9 @@ class DBTool { ...@@ -57,8 +57,9 @@ class DBTool {
return await _db?.update(model.tableName, model.mapValues, where: where) ?? 0; return await _db?.update(model.tableName, model.mapValues, where: where) ?? 0;
} }
static Future<List<Map<String, Object?>>> query(String tableName, {String? where}) async { static Future<List<Map<String, Object?>>> query(DBModel model, {String? where}) async {
return await _db?.query(tableName, where: where) ?? []; await _createTable(model);
return await _db?.query(model.tableName, where: where) ?? [];
} }
static Future<int> delete(DBModel model, {String? where}) async { static Future<int> delete(DBModel model, {String? where}) async {
......
...@@ -18,6 +18,7 @@ class AppRoutes { ...@@ -18,6 +18,7 @@ class AppRoutes {
static const HOME_PAGE = '/home'; static const HOME_PAGE = '/home';
static const CREATION_PAGE = '/creation'; static const CREATION_PAGE = '/creation';
static const CREATION_HISTORY_PAGE = '/creation-history';
static const CREATION_PAGE_DETAIL = '/creation-detail'; static const CREATION_PAGE_DETAIL = '/creation-detail';
static const ASSISTANT_PAGE = '/assistant'; static const ASSISTANT_PAGE = '/assistant';
static const MY_PAGE = '/my'; static const MY_PAGE = '/my';
......
...@@ -2,6 +2,7 @@ import 'package:chart/pages/assistant-item/index.dart'; ...@@ -2,6 +2,7 @@ import 'package:chart/pages/assistant-item/index.dart';
import 'package:chart/pages/assistant/index.dart'; import 'package:chart/pages/assistant/index.dart';
import 'package:chart/pages/chat/view.dart'; import 'package:chart/pages/chat/view.dart';
import 'package:chart/pages/creation-detail/index.dart'; import 'package:chart/pages/creation-detail/index.dart';
import 'package:chart/pages/creation/history/index.dart';
import 'package:chart/pages/creation/index.dart'; import 'package:chart/pages/creation/index.dart';
import 'package:chart/pages/eula/bindings.dart'; import 'package:chart/pages/eula/bindings.dart';
import 'package:chart/pages/eula/view.dart'; import 'package:chart/pages/eula/view.dart';
...@@ -176,6 +177,11 @@ class AppPages { ...@@ -176,6 +177,11 @@ class AppPages {
page: () => CreationPage(), page: () => CreationPage(),
binding: CreationBinding(), binding: CreationBinding(),
), ),
GetPage(
name: AppRoutes.CREATION_HISTORY_PAGE,
page: () => CreateHistoryPage(),
binding: CreateHistoryBinding(),
),
GetPage( GetPage(
name: AppRoutes.ASSISTANT_PAGE, name: AppRoutes.ASSISTANT_PAGE,
page: () => AssistantPage(), page: () => AssistantPage(),
......
...@@ -27,7 +27,6 @@ class CreationDetailController extends GetxController { ...@@ -27,7 +27,6 @@ class CreationDetailController extends GetxController {
'input2': TextEditingController(), 'input2': TextEditingController(),
}; };
final state = CreationDetailState(); final state = CreationDetailState();
final model = DetailModel();
// final // final
...@@ -47,13 +46,6 @@ class CreationDetailController extends GetxController { ...@@ -47,13 +46,6 @@ class CreationDetailController extends GetxController {
state.title = title; state.title = title;
state.id = id; state.id = id;
// state.detailList.value = []; // state.detailList.value = [];
final list = await DBTool.query(DetailModel.TableName, where: "type = '$title'");
if (list.isNotEmpty) {
final model = DetailModel.fromJson(list[0]);
inputControllerMap["input1"]?.text = model.object;
inputControllerMap["input2"]?.text = model.subject;
// state.genText = model.content;
}
items.sort((a, b) => a.sort! - b.sort!); items.sort((a, b) => a.sort! - b.sort!);
// input1 // input1
state.detailList.addAll(items); state.detailList.addAll(items);
...@@ -121,6 +113,15 @@ class CreationDetailController extends GetxController { ...@@ -121,6 +113,15 @@ class CreationDetailController extends GetxController {
// "content": state.messageList[0].text, // "content": state.messageList[0].text,
// }); // });
_this.state.isLoading = false; _this.state.isLoading = false;
// 保存到数据库
final model = DetailModel();
final date = DateTime.now();
model.type = state.title;
model.object = inputControllerMap["input1"]?.text ?? "";
model.subject = inputControllerMap["input2"]?.text ?? "";
model.content = state.genText;
model.date = "${date.year}-${date.month < 10 ? "0${date.month}" : date.month}-${date.day < 10 ? "0${date.day}" : date.day} ${date.hour < 10 ? "0${date.hour}" : date.hour}:${date.minute < 10 ? "0${date.minute}" : date.minute}:${date.second < 10 ? "0${date.second}" : date.second}";
DBTool.insert(model);
return; return;
} }
Map<String, dynamic> jsonMap = jsonDecode("${event.data}"); Map<String, dynamic> jsonMap = jsonDecode("${event.data}");
...@@ -132,11 +133,6 @@ class CreationDetailController extends GetxController { ...@@ -132,11 +133,6 @@ class CreationDetailController extends GetxController {
} }
bool back() { bool back() {
model.type = to.state.title;
model.object = inputControllerMap["input1"]?.text ?? "";
model.subject = inputControllerMap["input2"]?.text ?? "";
model.content = state.genText;
DBTool.update(model, isInsert: true, where: "type = '${model.type}'");
state.detailList.value = []; state.detailList.value = [];
inputControllerMap['input1']!.text = ''; inputControllerMap['input1']!.text = '';
inputControllerMap['input2']!.text = ''; inputControllerMap['input2']!.text = '';
......
...@@ -7,25 +7,24 @@ class DetailModel implements DBModel { ...@@ -7,25 +7,24 @@ class DetailModel implements DBModel {
var object = ""; var object = "";
var subject = ""; var subject = "";
var content = ""; var content = "";
var date = "";
@override @override
// TODO: implement tableName
String get tableName => TableName; String get tableName => TableName;
@override @override
// TODO: implement createTableSql String get createTableSql => "CREATE TABLE $tableName (id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, object TEXT, subject TEXT, content TEXT, date TEXT)";
String get createTableSql => "CREATE TABLE $tableName (id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT, object TEXT, subject TEXT, content TEXT)";
@override @override
// TODO: implement mapValues Map<String, Object> get mapValues => {"type": type, "object": object, "subject": subject, "content": content, "date": date};
Map<String, Object> get mapValues => {"type": type, "object": object, "subject": subject, "content": content};
static DetailModel fromJson(Map<String, Object?> jsonData) { static DetailModel fromJson(Map<String, Object?> jsonData) {
final model = DetailModel(); final model = DetailModel();
model.content = jsonData["content"] as String; model.content = jsonData["content"] as String? ?? "";
model.type = jsonData["type"] as String; model.type = jsonData["type"] as String? ?? "";
model.object = jsonData["object"] as String; model.object = jsonData["object"] as String? ?? "";
model.subject = jsonData["subject"] as String; model.subject = jsonData["subject"] as String? ?? "";
model.date = jsonData["date"] as String? ?? "";
return model; return model;
} }
......
import 'package:chart/pages/creation/history/controller.dart';
import 'package:get/get.dart';
class CreateHistoryBinding extends Bindings {
@override
void dependencies() {
Get.lazyPut<CreateHistoryController>(() => CreateHistoryController());
}
}
\ No newline at end of file
import 'package:chart/pages/creation-detail/models/detail_model.dart';
import 'package:get/get.dart';
import './state.dart';
import '../../../common/db/db_tool.dart';
class CreateHistoryController extends GetxController {
CreateHistoryController();
static CreateHistoryController get to => Get.put(CreateHistoryController());
final state = CreateHistoryState();
getHistoryMoels() {
DBTool.query(DetailModel()).then((value) {
final list = value.map((e) => DetailModel.fromJson(e)).toList();
state.models.value = list;
});
}
}
\ No newline at end of file
library creation_history;
export './controller.dart';
export './view.dart';
export './bindings.dart';
\ No newline at end of file
import 'package:chart/pages/creation-detail/models/detail_model.dart';
import 'package:get/get.dart';
class CreateHistoryState {
var models = <DetailModel>[].obs;
}
\ No newline at end of file
import 'package:chart/pages/creation/history/controller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class CreateHistoryPage extends GetView<CreateHistoryController> {
const CreateHistoryPage({Key? key}) : super(key: key);
Widget _mainView() {
return Obx(() => ListView(
children: controller.state.models.map((e) {
return Container(
padding: const EdgeInsets.all(15),
width: double.infinity,
child: Column(crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("类型:${e.type} \n时间:${e.date}", textAlign: TextAlign.start,),
const SizedBox(height: 15,),
Container(
padding: const EdgeInsets.all(20),
width: Get.width,
constraints: const BoxConstraints(minHeight: 300),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(4),
gradient: const LinearGradient(colors: [
Color.fromARGB(
255, 40, 40, 57),
Color.fromARGB(
255, 40, 40, 57),
],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: Text(e.content))
]),
);
}).toList()
));
}
@override
Widget build(BuildContext context) {
return GetBuilder<CreateHistoryController>(id: "create_history", init: CreateHistoryController(),
builder: (_) {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: Image.asset("assets/images/background.png").image,
fit: BoxFit.cover),
),
child: Scaffold(
backgroundColor: Color.fromARGB(0, 29, 33, 60),
appBar: AppBar(
backgroundColor: Color.fromARGB(255, 29, 33, 60),
title: const Text(
"创作记录",
),
elevation: 0),
body: SafeArea(child: _mainView()),
)
);
});
}
}
\ No newline at end of file
import 'package:chart/common/routers/routes.dart';
import 'package:chart/common/widgets/widgets.dart';
import './history/index.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
...@@ -26,12 +29,18 @@ class CreationPage extends GetView<CreationController> { ...@@ -26,12 +29,18 @@ class CreationPage extends GetView<CreationController> {
builder: (_) { builder: (_) {
return Scaffold( return Scaffold(
backgroundColor: Color.fromARGB(0, 29, 33, 60), backgroundColor: Color.fromARGB(0, 29, 33, 60),
// appBar: AppBar( appBar: AppBar(
// backgroundColor: Color.fromARGB(255, 29, 33, 60), backgroundColor: Color.fromARGB(255, 29, 33, 60),
// // title: const Text( title: const Text(
// // "创作", "创作",
// // ), ),
// elevation: 0), actions: [
TextButton(onPressed: () {
CreateHistoryController.to.getHistoryMoels();
Get.toNamed(AppRoutes.CREATION_HISTORY_PAGE);
}, child: const Text("历史记录", style: TextStyle(color: Colors.white),))
],
elevation: 0),
body: SafeArea( body: SafeArea(
child: _buildView(), child: _buildView(),
), ),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment