Skip to content

Commit

Permalink
fix(*): diary is not change after edit or delete
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhuJHua committed Sep 23, 2024
1 parent 89d443b commit 7d399ca
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 28 deletions.
2 changes: 1 addition & 1 deletion lib/components/dashboard/dashboard_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class DashboardComponent extends StatelessWidget {
buildManagerButton(Icons.article, '日记', Obx(() {
return buildDiaryDetail(state.diaryCount.value, '篇', state.contentCount.value, '字');
}), () {
logic.toDiaryManager();
//logic.toDiaryManager();
}),
buildManagerButton(Icons.category, '分类', Obx(() {
return buildDetail(state.categoryCount.value, '个');
Expand Down
32 changes: 22 additions & 10 deletions lib/components/diary_card/basic_diary_card/basic_card_logic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,18 @@ import 'package:flutter/services.dart';
import 'package:get/get.dart';
import 'package:mood_diary/common/models/isar/diary.dart';
import 'package:mood_diary/components/diary_tab_view/diary_tab_view_logic.dart';
import 'package:mood_diary/pages/home/calendar/calendar_logic.dart';
import 'package:mood_diary/pages/home/diary/diary_logic.dart';
import 'package:mood_diary/router/app_routes.dart';
import 'package:mood_diary/utils/utils.dart';

mixin BasicCardLogic {
Future<void> toDiary(Diary diary) async {
await HapticFeedback.mediumImpact();
var res = await Get.toNamed(AppRoutes.diaryPage, arguments: diary);
var res = await Get.toNamed(AppRoutes.diaryPage, arguments: [diary, true]);
var oldCategoryId = diary.categoryId;
if (res == 'delete') {
//如果分类为空,删除主页即可,如果分类不为空,双删除
if (diary.categoryId != null) {
if (diary.categoryId != null && Bind.isRegistered<DiaryTabViewLogic>(tag: diary.categoryId)) {
Bind.find<DiaryTabViewLogic>(tag: diary.categoryId).state.diaryList.removeWhere((e) => e.id == diary.id);
}
Bind.find<DiaryTabViewLogic>(tag: 'default').state.diaryList.removeWhere((e) => e.id == diary.id);
Expand All @@ -29,7 +28,22 @@ mixin BasicCardLogic {
}
//如果修改了但是没有修改分类,就替换掉原来的
if (oldCategoryId == newCategoryId) {
await Bind.find<DiaryLogic>().updateDiary(oldCategoryId);
//替换掉全部分类中的
var oldIndex =
Bind.find<DiaryTabViewLogic>(tag: 'default').state.diaryList.indexWhere((e) => e.id == diary.id);
Bind.find<DiaryTabViewLogic>(tag: 'default').state.diaryList.replaceRange(oldIndex, oldIndex + 1, [newDiary]);

//如果注册了控制器
if (diary.categoryId != null && Bind.isRegistered<DiaryTabViewLogic>(tag: diary.categoryId)) {
var oldIndex =
Bind.find<DiaryTabViewLogic>(tag: diary.categoryId).state.diaryList.indexWhere((e) => e.id == diary.id);
Bind.find<DiaryTabViewLogic>(tag: diary.categoryId)
.state
.diaryList
.replaceRange(oldIndex, oldIndex + 1, [newDiary]);
}

//await Bind.find<DiaryLogic>().updateDiary(oldCategoryId);
} else {
//如果修改了分类
//再去新的分类
Expand All @@ -43,12 +57,10 @@ mixin BasicCardLogic {

Future<void> toDiaryInCalendar(Diary diary) async {
await HapticFeedback.mediumImpact();
var res = await Get.toNamed(AppRoutes.diaryPage, arguments: diary);
if (res == 'delete') {
Bind.find<CalendarLogic>().state.diaryList.removeWhere((e) => e.id == diary.id);
} else {
await Bind.find<CalendarLogic>().getDiary();
}
await Get.toNamed(
AppRoutes.diaryPage,
arguments: [diary, false],
);
}

int getMaxLines(String context) {
Expand Down
2 changes: 1 addition & 1 deletion lib/components/search_card/search_card_logic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ class SearchCardLogic extends GetxController {

//选中卡片后跳转到详情页,直接携带Diary作为参数
Future<void> toDiaryPage(Diary diary) async {
await Get.toNamed(AppRoutes.diaryPage, arguments: diary);
await Get.toNamed(AppRoutes.diaryPage, arguments: [diary, false]);
}
}
5 changes: 4 additions & 1 deletion lib/pages/diary_details/diary_details_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@ import 'package:mood_diary/common/models/isar/diary.dart';
class DiaryDetailsState {
late Diary diary;

late bool showAction;

DiaryDetailsState() {
diary = Get.arguments;
diary = Get.arguments[0];
showAction = Get.arguments[1];

///Initialize variables
}
Expand Down
27 changes: 14 additions & 13 deletions lib/pages/diary_details/diary_details_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ class DiaryDetailsPage extends StatelessWidget {
slivers: [
SliverAppBar(
expandedHeight: aspect != null
? (aspect<= 1.0 ? min(size.width / aspect, size.height * 0.618) : size.width / aspect)
? (aspect <= 1.0 ? min(size.width / aspect, size.height * 0.618) : size.width / aspect)
: null,
title: Text(
state.diary.title ?? '',
Expand All @@ -162,16 +162,18 @@ class DiaryDetailsPage extends StatelessWidget {
),
pinned: true,
actions: [
IconButton(
onPressed: () {
logic.delete(state.diary);
},
icon: const Icon(Icons.delete)),
IconButton(
onPressed: () {
logic.toEditPage(state.diary);
},
icon: const Icon(Icons.edit)),
if (state.showAction) ...[
IconButton(
onPressed: () {
logic.delete(state.diary);
},
icon: const Icon(Icons.delete)),
IconButton(
onPressed: () {
logic.toEditPage(state.diary);
},
icon: const Icon(Icons.edit)),
],
IconButton(
onPressed: () {
logic.toSharePage();
Expand All @@ -191,8 +193,7 @@ class DiaryDetailsPage extends StatelessWidget {
Container(
padding: const EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: colorScheme.surfaceContainer,
borderRadius: AppBorderRadius.smallBorderRadius),
color: colorScheme.surfaceContainer, borderRadius: AppBorderRadius.smallBorderRadius),
child: QuillEditor.basic(
controller: logic.quillController,
configurations: const QuillEditorConfigurations(
Expand Down
10 changes: 8 additions & 2 deletions lib/pages/home/diary/diary_logic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class DiaryLogic extends GetxController with GetTickerProviderStateMixin {
late TabController tabController = TabController(length: state.categoryList.length + 1, vsync: this);

late HomeLogic homeLogic = Bind.find<HomeLogic>();

double lastScrollOffset = .0;

@override
Expand Down Expand Up @@ -44,6 +45,7 @@ class DiaryLogic extends GetxController with GetTickerProviderStateMixin {
_checkPageChange();
// 检查是否显示顶部内容
_checkShowTop();

homeLogic.showNavigatorBar();
}

Expand All @@ -65,7 +67,7 @@ class DiaryLogic extends GetxController with GetTickerProviderStateMixin {
if (tabController.index == 0) {
await Bind.find<DiaryTabViewLogic>(tag: 'default').paginationDiary();
} else {
await Bind.find<DiaryTabViewLogic>(tag: state.categoryList[tabController.index].id).paginationDiary();
await Bind.find<DiaryTabViewLogic>(tag: state.categoryList[tabController.index - 1].id).paginationDiary();
}
}
}
Expand All @@ -79,7 +81,11 @@ class DiaryLogic extends GetxController with GetTickerProviderStateMixin {
/// 2. tab切换时
/// 3. view mode刷新时(实际上肯定在顶部,干脆直接改state)
void _checkShowTop() {
state.isToTopShow.value = state.innerController.offset > 100;
if (state.innerController.hasClients) {
state.isToTopShow.value = state.innerController.offset > 100;
} else {
state.isToTopShow.value = false;
}
}

/// 自定义 PrimaryController 的修改
Expand Down

0 comments on commit 7d399ca

Please sign in to comment.