Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ede1c71ae5 | ||
|
|
75c9d21891 | ||
|
|
161f175f4b |
@@ -1,5 +1,32 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.3 - 2026-07-15
|
||||
|
||||
### Summary
|
||||
- Hotfix release persisting the hide-archived toggle so it survives page navigation and app restarts.
|
||||
|
||||
### Fixed
|
||||
- Fixed the hide-archived toggle resetting to show archived projects whenever the project list page was rebuilt or the app was restarted; the setting is now persisted via SharedPreferences in ProjectViewModel.
|
||||
|
||||
### Build
|
||||
- Bumped Flutter app version to 1.0.3+4 for the v1.0.3 release tag.
|
||||
|
||||
### Assets
|
||||
- Package Name: com.ooopos.line
|
||||
- App Version: 1.0.3+4
|
||||
- Signature Check: apksigner verify --verbose --print-certs <apk>
|
||||
- Release assets (split-per-ABI):
|
||||
|
||||
| Asset | ABI | Size (bytes) | SHA256 |
|
||||
|---|---|---:|---|
|
||||
| app-armeabi-v7a-release.apk | armeabi-v7a | 20704616 | d41cae579672303746449e086564b59067a3b74244845824e7749ef48951ee22 |
|
||||
| app-arm64-v8a-release.apk | arm64-v8a | 22634962 | d01b252bf065b74cd653ef172d45f9a5627977cce4f6aa918fe97e14deb1075f |
|
||||
| app-x86_64-release.apk | x86_64 | 23807057 | e5c099c853cb94d136ebf19c9847d07cf9361252fa7154e9ac16b1d960b96520 |
|
||||
|
||||
### References
|
||||
- 161f175 fix(project): persist hide-archived toggle across page rebuilds
|
||||
- 75c9d21 build(release): bump version to 1.0.3+4
|
||||
|
||||
## 1.0.2 - 2026-07-15
|
||||
|
||||
### Summary
|
||||
|
||||
@@ -52,6 +52,9 @@ class ProjectViewModel extends ChangeNotifier {
|
||||
/// 项目排序顺序,默认降序
|
||||
ProjectSortOrder _sortOrder = ProjectSortOrder.descending;
|
||||
|
||||
/// 是否隐藏已归档项目(持久化)
|
||||
bool _hideArchived = false;
|
||||
|
||||
/// 获取项目列表
|
||||
List<Project> get projects => _projects;
|
||||
|
||||
@@ -77,6 +80,9 @@ class ProjectViewModel extends ChangeNotifier {
|
||||
/// 获取项目排序顺序
|
||||
ProjectSortOrder get sortOrder => _sortOrder;
|
||||
|
||||
/// 获取是否隐藏已归档项目
|
||||
bool get hideArchived => _hideArchived;
|
||||
|
||||
/// 获取已归档项目数量
|
||||
int get archivedCount => _projects.where((p) => p.isArchived).length;
|
||||
|
||||
@@ -98,6 +104,7 @@ class ProjectViewModel extends ChangeNotifier {
|
||||
log('Loading projects...');
|
||||
try {
|
||||
await _loadSortOrder();
|
||||
await _loadHideArchived();
|
||||
_projects = await _databaseService.getProjects();
|
||||
_sortProjects();
|
||||
_projectCount = _projects.length;
|
||||
@@ -554,6 +561,20 @@ class ProjectViewModel extends ChangeNotifier {
|
||||
log('Project sort field loaded: $_sortField, order loaded: $_sortOrder');
|
||||
}
|
||||
|
||||
/// 从本地存储加载隐藏归档项目设置
|
||||
Future<void> _loadHideArchived() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_hideArchived = prefs.getBool('project_hide_archived') ?? false;
|
||||
}
|
||||
|
||||
/// 设置是否隐藏已归档项目并持久化
|
||||
Future<void> setHideArchived(bool value) async {
|
||||
_hideArchived = value;
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool('project_hide_archived', value);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
/// 获取排序字段的显示名称
|
||||
/// [sortField] 排序字段
|
||||
/// 返回排序字段的显示名称
|
||||
|
||||
@@ -40,7 +40,6 @@ class _ProjectListPageState extends State<ProjectListPage> {
|
||||
String _searchQuery = '';
|
||||
List<Project> _filteredProjects = [];
|
||||
bool _isSearchMode = false;
|
||||
bool _hideArchived = false;
|
||||
int _searchRequestSequence = 0;
|
||||
|
||||
@override
|
||||
@@ -238,7 +237,7 @@ class _ProjectListPageState extends State<ProjectListPage> {
|
||||
? _filteredProjects
|
||||
: viewModel.projects;
|
||||
final projects =
|
||||
_hideArchived && !_isSearchMode
|
||||
viewModel.hideArchived && !_isSearchMode
|
||||
? rawProjects.where((p) => !p.isArchived).toList()
|
||||
: rawProjects;
|
||||
|
||||
@@ -871,7 +870,7 @@ class _ProjectListPageState extends State<ProjectListPage> {
|
||||
// 在搜索模式下,直接使用传入的project参数
|
||||
// 在非搜索模式下,确保索引有效
|
||||
final currentProject =
|
||||
(_isSearchMode || _hideArchived)
|
||||
(_isSearchMode || viewModel.hideArchived)
|
||||
? project
|
||||
: (index < viewModel.projects.length
|
||||
? viewModel.projects[index]
|
||||
@@ -1410,18 +1409,16 @@ class _ProjectListPageState extends State<ProjectListPage> {
|
||||
},
|
||||
),
|
||||
BottomSheetOption.normal(
|
||||
title: _hideArchived ? '显示归档项目' : '隐藏归档项目',
|
||||
title: viewModel.hideArchived ? '显示归档项目' : '隐藏归档项目',
|
||||
icon: Icon(
|
||||
_hideArchived
|
||||
viewModel.hideArchived
|
||||
? CupertinoIcons.eye
|
||||
: CupertinoIcons.eye_slash,
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
),
|
||||
onTap: () {
|
||||
Navigator.pop(context);
|
||||
setState(() {
|
||||
_hideArchived = !_hideArchived;
|
||||
});
|
||||
viewModel.setHideArchived(!viewModel.hideArchived);
|
||||
},
|
||||
),
|
||||
BottomSheetOption.cancel(
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
name: line
|
||||
description: "A timeline app for project management and life recording."
|
||||
publish_to: 'none'
|
||||
version: 1.0.2+3
|
||||
version: 1.0.3+4
|
||||
|
||||
environment:
|
||||
sdk: ^3.7.2
|
||||
|
||||
+12
-12
@@ -1,29 +1,29 @@
|
||||
{
|
||||
"latestVersion": "1.0.2",
|
||||
"versionCode": 3,
|
||||
"latestVersion": "1.0.3",
|
||||
"versionCode": 4,
|
||||
"minRequiredVersionCode": 1,
|
||||
"releaseNotes": "1. 修复添加记录时无法移除背景图片的问题\n2. 新增时间间隔显示模式(距离上一条 / 距离第一条 / 两者)\n3. 新增项目归档功能(归档后只读浏览,灰色遮罩标识)\n4. 新增应用内更新检测(每 24 小时自动检测,支持应用内安装 APK)\n5. 优化录音按钮图标样式",
|
||||
"releaseNotes": "修复隐藏归档项目设置退出后不生效的问题",
|
||||
"publishDate": "2026-07-15",
|
||||
"assets": [
|
||||
{
|
||||
"abi": "arm64-v8a",
|
||||
"versionCode": 2003,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.2/app-arm64-v8a-release.apk",
|
||||
"sha256": "6c8efa0bae2395647e8d676f76d3bb187183f389f3538b7e0d8f2e6579e7278b",
|
||||
"versionCode": 2004,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.3/app-arm64-v8a-release.apk",
|
||||
"sha256": "d01b252bf065b74cd653ef172d45f9a5627977cce4f6aa918fe97e14deb1075f",
|
||||
"size": 22634962
|
||||
},
|
||||
{
|
||||
"abi": "armeabi-v7a",
|
||||
"versionCode": 1003,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.2/app-armeabi-v7a-release.apk",
|
||||
"sha256": "bc5f6254484443207c86a3376ba413fecd2717bcaf1fee09e6a8a3947ee7a227",
|
||||
"versionCode": 1004,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.3/app-armeabi-v7a-release.apk",
|
||||
"sha256": "d41cae579672303746449e086564b59067a3b74244845824e7749ef48951ee22",
|
||||
"size": 20704616
|
||||
},
|
||||
{
|
||||
"abi": "x86_64",
|
||||
"versionCode": 4003,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.2/app-x86_64-release.apk",
|
||||
"sha256": "1d42e5f06a931ad4fcd2129d287996a63830247bcee0b75f1f6aa85a1d495311",
|
||||
"versionCode": 4004,
|
||||
"url": "https://git.ooopos.site/agnoy/line/releases/download/v1.0.3/app-x86_64-release.apk",
|
||||
"sha256": "e5c099c853cb94d136ebf19c9847d07cf9361252fa7154e9ac16b1d960b96520",
|
||||
"size": 23807057
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user